Tengo el siguiente VBScript en un Clásico de la página ASP:

function getMagicLink(fromWhere, provider)
    dim url 
    url = "magic.asp?fromwhere=" & fromWhere
    If Not provider is Nothing Then ' Error occurs here
        url = url & "&provider=" & provider 
    End if
    getMagicLink = "<a target='_blank' href='" & url & "'>" & number & "</a>"
end function

Sigo recibiendo un «error» Requiere de Objeto messager en la línea que dice If Not provider Is Nothing Then.

El valor es NULO o no es NULL, entonces ¿por qué estoy recibiendo este error?

Editar: Cuando invoco el objeto, que se pasa NULL, o me paso en una cadena.

3 Comentarios

  1. 34

    De su código, parece que provider es una variante o alguna otra variable, y no un objeto.

    Is Nothing es para sólo los objetos, sin embargo, más tarde te dicen que es un valor que debe ser NULL o not NULL, que sería manejado por IsNull.

    Trate de usar:

    If Not IsNull(provider) Then 
        url = url & "&provider=" & provider 
    End if

    Alternativamente, si eso no funciona, trate de:

    If provider <> "" Then 
        url = url & "&provider=" & provider 
    End if
    • He intentado utilizar If Not IsNull(provider) Then, pero luego la página se plantea una excepción en url = url & "&provider=" & provider línea. El error dice: «la variable de Objeto no establecida».
    • Eso es un rascador de cabeza. Está usted pasando en vbNull a provider, o algo más?
    • Yo estoy pasando en Nothing
    • Siempre se me enseñó Nothing es para sólo los objetos, intentar pasar en vbNull lugar. Nothing <> Null en VBScript.
    • Esto parece funcionar. Gracias por tu ayuda.
    • Uso Null, no vbNull. vbNull es una constante que se utiliza con el VarType de la función.

  2. 20

    Veo mucha confusión en los comentarios. Null, IsNull() y vbNull se utilizan, principalmente, manejo de base de datos y normalmente no se utilizan en VBScript. Si no se indica explícitamente en la documentación de la convocatoria de objetos/datos, no la use.

    Para probar si una variable no inicializada, el uso de IsEmpty(). Para probar si una variable no inicializada o contiene "", prueba en "" o Empty. Para probar si una variable es un objeto, utilice IsObject y a ver si este objeto no tiene ninguna prueba de referencia en Is Nothing.

    En su caso, primero se desea comprobar si la variable es un objeto y, a continuación, ver si esa variable es Nothing, porque si no es un objeto, se obtiene el «error» Requiere de Objeto cuando se prueba en Nothing.

    fragmento de la mezcla y el partido en el código:

    If IsObject(provider) Then
        If Not provider Is Nothing Then
            ' Code to handle a NOT empty object /valid reference
        Else
            ' Code to handle an empty object /null reference
        End If
    Else
        If IsEmpty(provider) Then
            ' Code to handle a not initialized variable or a variable explicitly set to empty
        ElseIf provider = "" Then
            ' Code to handle an empty variable (but initialized and set to "")
        Else
            ' Code to handle handle a filled variable
        End If
    End If
  3. 0

    Me acaba de añadir un espacio en blanco («») para el final de la variable y hacer la comparación. Algo así debería funcionar incluso cuando esa variable es null. También puede recortar la variable sólo en el caso de los espacios.

    If provider & "" <> "" Then 
        url = url & "&provider=" & provider 
    End if

Dejar respuesta

Please enter your comment!
Please enter your name here