wake-up-neo.com

Fehler beim Überprüfen auf NULL in VBScript

Ich habe das folgende VBScript in einer klassischen ASP Seite:

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

Ich erhalte ständig die Fehlermeldung "Objekt erforderlich" in der Zeile If Not provider Is Nothing Then.

Entweder ist der Wert NULL oder nicht NULL. Warum erhalte ich dann diesen Fehler?

Bearbeiten: Wenn ich das Objekt aufrufe, übergebe ich entweder NULL oder eine Zeichenfolge.

25

In Ihrem Code sieht es so aus, als wäre provider eine Variante oder eine andere Variable und kein Objekt.

Is Nothing gilt nur für Objekte. Später geben Sie jedoch an, dass es sich um einen Wert handelt, der entweder NULL oder NOT NULL sein sollte. Dieser Wert wird von IsNull verarbeitet.

Versuchen Sie es mit:

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

Wenn dies nicht funktioniert, versuchen Sie Folgendes:

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

Ich sehe viel Verwirrung in den Kommentaren. Null, IsNull() und vbNull werden hauptsächlich für das Datenbankhandling verwendet und normalerweise nicht in VBScript verwendet. Wenn dies in der Dokumentation des aufrufenden Objekts/der aufrufenden Daten nicht ausdrücklich angegeben ist, verwenden Sie es nicht.

Verwenden Sie IsEmpty(), um zu testen, ob eine Variable nicht initialisiert ist. Um zu testen, ob eine Variable nicht initialisiert ist oder "" Enthält, testen Sie "" Oder Empty. Um zu testen, ob eine Variable ein Objekt ist, verwenden Sie IsObject und um festzustellen, ob dieses Objekt keinen Referenztest für Is Nothing Hat.

In Ihrem Fall möchten Sie zuerst testen, ob die Variable ein Objekt ist, und dann feststellen, ob diese Variable Nothing ist. Wenn es sich nicht um ein Objekt handelt, wird beim Testen der Fehler "Objekt erforderlich" angezeigt am Nothing.

code-Schnipsel zum Mischen und Abgleichen:

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
20
AutomatedChaos

Ich werde einfach ein Leerzeichen ("") am Ende der Variablen einfügen und den Vergleich durchführen. So etwas wie unten sollte funktionieren, auch wenn diese Variable null ist. Sie können die Variable auch nur für Leerzeichen zuschneiden.

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