Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deivid

[Resolvido] Problema com FOR

Recommended Posts

Olá pessoal, estou enfrentando problemas na montagem de um código de repetição, o objetivo é rodar o mesmo código capturado de um formulário e dividido por virgulas, ele roda somente quando eu não utilizo dentro do FOR um If para tratar erro. Gostaria de saber se alguém tem alguma sugestão. O código é o seguinte:

 

CODE
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<!--#include file="../Connections/ConnWMIBank.asp" -->

<%

 

On Error Resume Next

Server.ScriptTimeout = 6000

 

Dim rsCurUserInfo__MMColParam

rsCurUserInfo__MMColParam = "1"

If (Session("MM_UserName") <> "") Then

rsCurUserInfo__MMColParam = Session("MM_UserName")

End If

%>

 

<%

Dim rsCurUserInfo

Dim rsCurUserInfo_numRows

 

Set rsCurUserInfo = Server.CreateObject("ADODB.Recordset")

rsCurUserInfo.ActiveConnection = MM_ConnWMIBank_STRING

rsCurUserInfo.Source = "SELECT Hash, DomainName FROM Users WHERE UserName = '" + Replace(rsCurUserInfo__MMColParam, "'", "''") + "'"

rsCurUserInfo.CursorType = 0

rsCurUserInfo.CursorLocation = 2

rsCurUserInfo.LockType = 1

rsCurUserInfo.Open()

 

rsCurUserInfo_numRows = 0

%>

<%

 

ArrayComputer = Split(Request.Form("Hosts"),",")

strUser = Session("MM_UserName")

strDomain = (rsCurUserInfo.Fields.Item("DomainName").Value)

strPassword = (rsCurUserInfo.Fields.Item("Hash").Value)

 

For Each strComputer in ArrayComputer

 

If Err.Number = 0 Then

 

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set objWMIService = objSWbemLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword, "MS_409", "ntlmdomain:" +strDomain)

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48)

 

For Each objItem in ColItems

Response.Write(objItem.Caption&"<BR/>")

CaptionCS = objItem.Caption

Response.Write(objItem.Domain&"<BR/>")

DomainCS = objItem.Domain

Response.Write(objItem.Manufacturer&"<BR/>")

ManufacturerCS = objItem.Manufacturer

RAM = objItem.TotalPhysicalMemory / 1000 /1000

RAMTotal = FormatNumber(RAM,0)

Response.Write (RAMTotal & " MB<BR/>")

Next

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)

For Each objItem in ColItems

Response.Write(objItem.Caption&"<BR/>")

CaptionOS = objItem.Caption

Next

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)

For Each objItem in ColItems

Response.Write(objItem.CSDVersion&"<BR/>")

ServPack = objItem.CSDVersion

Next

Next

 

Else

If Err.Number = "-2147024891" Then

Response.Write("</br></br></br></br></br></br></br></br></br></br></br></br><span class=""txtCorpo"">Acesso negado. Verifique suas permissões para o host " & strComputer & "</span>")

Response.Write("<meta HTTP-EQUIV=""refresh"" CONTENT=""4;URL=ScanOne.asp"">")

End If

If Err.Number = "-2147023174" Then

Response.Write("</br></br></br></br></br></br></br></br></br></br></br></br><span class=""txtCorpo"">Host " & strComputer & " não encontrado.</span>")

Response.Write("<meta HTTP-EQUIV=""refresh"" CONTENT=""4;URL=ScanOne.asp"">")

End If

End If

 

rsCurUserInfo.Close()

Set rsCurUserInfo = Nothing

%>

 

O FOR a que se referia é a linha:

 

For Each strComputer in ArrayComputer

 

Se eu não utilizar o If:

 

If Err.Number = 0 Then

 

que continua no Else e termina no ultimo End If o código roda corretamente, mas se eu coloco este If passa a dar o seguinte erro:

 

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A041F)

'Next' inesperado

/HostsModule/ScanMoreResult.asp, line 65

Next

 

Já tentei inverter a lógica do If colocando:

 

If Err.Number > 0 Then ... e tratar os erros e depois do Else colocar o código, mas não deu certo. Agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.