Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, einen Fehler (Typkonflikt) zu beheben, der auftritt, wenn Sie Visual Basic Scripting Edition (VBScript) verwenden, um einen numerischen Vergleich oder eine Berechnung auf einem adNumeric
(131) Feldtyp durchzuführen.
Originalproduktversion: Visual Basic Script
Ursprüngliche KB-Nummer: 306916
Symptome
Wenn Sie VBScript verwenden, um einen numerischen Vergleich oder eine Berechnung auf einem adNumeric
(131) Feldtyp durchzuführen, erhalten Sie möglicherweise die folgenden Fehlermeldungen:
Fehlermeldung 1
Microsoft VBScript-Laufzeitfehler '800a000d'
TypenkonfliktFehlermeldung 2
Microsoft VBScript-Laufzeitfehler '800a01ca'
Variable verwendet einen Automatisierungstyp, der in VBScript nicht unterstützt wird
Ursache
Diese Fehlermeldungen treten auf, weil VBScript adNumeric
-Werte nicht richtig in einen gültigen numerischen Typ konvertieren kann. Dieses Verhalten ist beabsichtigt.
Lösung
Sie können eine der folgenden zwei möglichen Problemumgehungen verwenden:
- Verwenden Sie die Funktion
CDbl
oderCInt
zum Umwandeln des FeldsadNumeric
. - Verwenden Sie JScript, das dieses Verhalten nicht zeigt.
Sie können dieses Verhalten in einer Active Server Pages (ASP)-Seite oder über eine einfache Visual Basic Script (.vbs)-Datei reproduzieren. Die folgenden Schritte veranschaulichen, wie das Problem in einer einfachen .vbs-Datei reproduziert werden kann.
Schritt 1 zum Reproduzieren des Verhaltens: Erstellen der Oracle-Tabelle
Führen Sie das folgende Skript auf Ihrem Oracle-Server aus, um die Beispieltabelle zu erstellen:
DROP TABLE Cust;
CREATE TABLE Cust (CustID NUMBER(22,6) PRIMARY KEY, Name VARCHAR2(50));
INSERT INTO Cust VALUES(222,'Kent');
INSERT INTO Cust VALUES(333,'Sally');
COMMIT;
Schritt 2 zum Reproduzieren des Verhaltens: Erstellen der VBS-Datei
Erstellen Sie in Notepad ein neues Textdokument mit dem Namen Test.vbs, und fügen Sie den folgenden Code ein.
Set oConn = CreateObject("ADODB.Connection") oConn.open "Provider=MSDAORA;user id=User;" & _ "password=password;data source=Oracle816Server;" set oRS = oConn.Execute("Select CustID FROM Cust") MsgBox "Numeric field type is 131." & vbcrlf & _ "Field Type = " & ors.fields("CustID").type MsgBox "Numeric field * 100 = " & oRS("CustID") * 100 MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
Ändern Sie die Verbindungszeichenfolge so, dass sie auf Ihren Oracle-Server verweist und einen gültigen Benutzernamen und ein gültiges Kennwort bereitstellt.
Speichern Sie Test.vbs auf Ihrem Desktop. Sie sollten eine Warnung erhalten, dass das Ändern der Erweiterung die Datei instabil machen kann. Klicken Sie zum Fortsetzen des Vorgangs auf OK . Wenn diese Warnung nicht angezeigt wird, sollten Sie sicherstellen, dass Erweiterungen für bekannte Dateitypen angezeigt werden.
Schließen Sie Test.vbs.
Doppelklicken Sie auf Ihrem Desktop auf Test.vbs, um den Code auszuführen. Die Fehlermeldung wegen eines Typkonflikts wird angezeigt:
Entkommentieren Sie die folgende Codezeile, die das Feld
adNumeric
in einen Double-Datentyp konvertiert:MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
Kommentieren Sie die folgende Codezeile aus:
MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
Speichern und schließen Sie Test.vbs.
Doppelklicken Sie auf Ihrem Desktop auf Test.vbs, um den Code erneut auszuführen. Sie erhalten jetzt zwei Meldungsfelder und keine Fehlermeldungen.