Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel helpt u bij het oplossen van een fout (type komt niet overeen) die optreedt wanneer u Visual Basic Scripting Edition (VBScript) gebruikt om een numerieke vergelijking of berekening uit te voeren op een adNumeric veldtype (131).
Oorspronkelijke productversie: Visual Basic Script
Oorspronkelijk KB-nummer: 306916
Symptomen
Wanneer u VBScript gebruikt om een numerieke vergelijking of berekening uit te voeren op een adNumeric veldtype (131), ontvangt u mogelijk de volgende foutberichten:
Foutbericht 1
Microsoft VBScript-runtimefout '800a000d'
Type komt niet overeenFoutbericht 2
Microsoft VBScript-runtimefout '800a01ca'
Variabele maakt gebruik van een Automation-type dat niet wordt ondersteund in VBScript
Oorzaak
Deze foutberichten treden op omdat VBScript waarden niet correct kan converteren adNumeric naar een geldig numeriek type. Dit is zo ontworpen.
Oplossing
U kunt een van de volgende twee mogelijke tijdelijke oplossingen gebruiken:
- Gebruik de
CDblofCIntfunctie om hetadNumericveld te converteren. - Gebruik JScript, dat dit gedrag niet vertoont.
U kunt dit gedrag reproduceren op een ASP-pagina (Active Server Pages) of via een eenvoudig Visual Basic Script-bestand (.vbs). De volgende stappen laten zien hoe u het probleem kunt reproduceren in een eenvoudig VBS-bestand.
Stap 1 om het gedrag te reproduceren: de Oracle-tabel maken
Voer het volgende script uit op uw Oracle-server om de voorbeeldtabel te maken:
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;
Stap 2 om het gedrag te reproduceren: het VBS-bestand maken
Maak in Kladblok een nieuw tekstdocument met de naam Test.vbs en plak de volgende code in de test.
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")) * 100Wijzig de verbindingsreeks zodat deze verwijst naar uw Oracle-server en een geldige gebruikersnaam en een geldig wachtwoord opgeven.
Sla Test.vbs op uw bureaublad op. U ontvangt een waarschuwing dat het bestand instabiel wordt als u de extensie wijzigt. Klik op OK om door te gaan. Als u deze waarschuwing niet ziet, wilt u er mogelijk voor zorgen dat u extensies voor bekende bestandstypen weergeeft.
Sluit Test.vbs.
Dubbelklik op Test.vbs op uw bureaublad om de code uit te voeren. U ontvangt het foutbericht Type komt niet overeen .
Verwijder opmerkingen bij de volgende coderegel, waarmee het
adNumericveld wordt geconverteerd naar een dubbel gegevenstype:MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100Markeer de volgende regel code als commentaar:
MsgBox "Numeric field * 100 = " & oRS("CustID") * 100Sluit Test.vbs en sla deze op.
Dubbelklik op Test.vbs op uw bureaublad om de code opnieuw uit te voeren. Vervolgens ontvangt u twee berichtvakken en geen foutberichten.