none
Valor Menor, Valor Maior RRS feed

  • Pergunta

  • Ba galera

    Bom dia

    Galera estou tentando modificar o script abaixo para atender uma demanda, talvez tche ele não seja o melhor caminho e os amigos possam compartilhar outro.

    O que tenho que fazer galera, tenho que ler uma chave no registro e reportar uma mensagem que informe valor correto (recomendado), valor incorreto (inferior ao recomendado) ou valor correto (superior ao recomendado), sendo assim estava pensando em usar o sinal de > e < mais não rolou tche, ba os amigos conhecem alguma forma de fazer por outro caminho, ou como mudar este codigo abaixo.

    Const HKLM = &H80000002
    
    strComputer = "."
    
    Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
    
    On Error Resume Next
       
    oReg.GetStringValue HKLM,"SOFTWARE\GRADE\VERSION\","ID", strConsulta
    
    on error goto 0
    
    if isnull(strConsulta) then strConsulta="0"
    
    Select Case strConsulta
    	Case "1"
    		Exec01
    	Case "2"
    		Exec02
    	Case "3"
    		Exec03
    	Case "0"
    		Exec04		
    End Select
    
    	Sub Exec01
    		WScript.Echo "Vc esta aqui, na Exec01 !!!!!"
    	End Sub
    
    	Sub Exec02
    		WScript.Echo "Vc esta aqui, na Exec02 !!!!!"
    	End Sub
    
    	Sub Exec03
    		WScript.Echo "Vc esta aqui, na Exec03 !!!!!"
     	End Sub
    
    	Sub Exec04
    		WScript.Echo "Vc esta aqui, na Exec04 !!!!!"
     	End Sub
    		
    WScript.Quit	

    quinta-feira, 12 de julho de 2012 13:42

Respostas

  • Marcelo,

    Seria isto?

    If isnull(strConsulta) OR strConsulta=0 then
         wscript.echo "A chave não existe"
    end if

    Sobre o código ter funcionado com ESLEIF e não com IF: Pode ter sobrado algum caractere (já aconteceu comigo) em algum lugar do script que ferrou o IF,

    procure não utilizar estruturas como essa abaixo:

    If isnull(strConsulta) then strConsulta="0"

    Utilize assim:

    If isnull(strConsulta) then 
        strConsulta="0"
    end if

    Os dois deveriam funcionar da mesma forma, mas para evitar a "fadiga", procure sempre utilizar a estrutura que feche os IFs.


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI sexta-feira, 13 de julho de 2012 16:00
    sexta-feira, 13 de julho de 2012 14:52
    Moderador

Todas as Respostas

  • Marcelo,

    Utilize estruturas de IF no lugar do Select Case.

    Com select case também dá mas com IF fica mais fácil.

    Tente fazer se não funcionar poste aque como você tentou, porque não entendi muito bem o que você quer.


    Fábio de Paula Junior

    quinta-feira, 12 de julho de 2012 15:47
    Moderador
  • Ba Fabio boa tarde tche.

    Montei com o If e ficou assim.

    Const HKLM = &H80000002
    
    strComputer = "."
    
    Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
    
    On Error Resume Next
       
    oReg.GetStringValue oReg.GetStringValue HKLM,"SOFTWARE\GRADE\VERSION\","ID", strConsulta
    
    on error goto 0
    
    if isnull(strConsulta) then strConsulta="0"
    
    strkey = "3"
    
    if UCASE(strConsulta) <> strkey Then
    	WScript.Echo "Vc esta aqui !!!!"
    End If

    Mais quando o valor esta igual ao strkey ele passa batido sem informação, e eu necessito que quando o valor for igual ele responda "valor correto (recomendado)" quando o valor for menor que o strkey eu necessito que ele responda "alor incorreto (inferior ao recomendado)" e se o valor for maior que o strkey eu teria que responder "valor correto (superior ao recomendado)", conseguiu compreender meu caro amigo.

    Obrigado tche.

    quinta-feira, 12 de julho de 2012 17:52
  • Marcelo,

    Segue um exemplo com duas expressões: Igual e Menor que.

    if UCASE(strConsulta) = strkey Then

    WScript.Echo "Valor correto recomendado"

    elseif UCASE(strConsulta) < strkey Then

    wscript.echo "Valor incorreto(inferior ao recomendado"

    end if

    Tente adicionar o Maior que, se der errado retorne aqui com seu código.


    Fábio de Paula Junior

    quinta-feira, 12 de julho de 2012 21:14
    Moderador
  • Ba Fabio

    Não creio tche, eu ate fiz o teste assim olha.

    if UCASE(strConsulta) > strkey Then
    WScript.Echo "Vc esta aqui !!!!"
    End If

    if UCASE(strConsulta) < strkey Then
    WScript.Echo "Vc esta aqui !!!!"
    End If

    E não funfo tche, por favor agora me de uma aula para que eu possa aprender, pq no meu teste não funfo e usando o elseif funfa tche.

    muito obrigado pela ajuda estou finalizando o codigo ja fecho o post.

    obs, ja esta rolando tratamento do valor Maior.

    sexta-feira, 13 de julho de 2012 11:06
  • Ba Fabio

    Mais uma duvida, vc me mostrou uma vez tche como transformar um valor null em zero, tem alguma forma de fazer um tratamento neste if que se o valor for o zero ou o null ele retorne a mensagem "A chave nao existe". obrigado tche.

    o codigo ficou assim agora.


    Onerrorgoto0

    Ifisnull(strConsulta) then strConsulta="0"

    ifUCASE(strConsulta) = strkeyThen    
        WScript.Echo"Valor correto recomendado"
    ElseIfUCASE(strConsulta) < strkeyThen    
        wscript.echo"Valor incorreto(inferior ao recomendado)"
    ElseIfUCASE(strConsulta) > strkeyThen    
        wscript.echo"Valor correto(superior ao recomendado)"    
    endif

    sexta-feira, 13 de julho de 2012 11:26
  • Marcelo,

    Seria isto?

    If isnull(strConsulta) OR strConsulta=0 then
         wscript.echo "A chave não existe"
    end if

    Sobre o código ter funcionado com ESLEIF e não com IF: Pode ter sobrado algum caractere (já aconteceu comigo) em algum lugar do script que ferrou o IF,

    procure não utilizar estruturas como essa abaixo:

    If isnull(strConsulta) then strConsulta="0"

    Utilize assim:

    If isnull(strConsulta) then 
        strConsulta="0"
    end if

    Os dois deveriam funcionar da mesma forma, mas para evitar a "fadiga", procure sempre utilizar a estrutura que feche os IFs.


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI sexta-feira, 13 de julho de 2012 16:00
    sexta-feira, 13 de julho de 2012 14:52
    Moderador
  • show tche trilegal.

    obrigado Fabião.

    sexta-feira, 13 de julho de 2012 15:59