Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo consente di risolvere l'errore di mancata corrispondenza del tipo che si verifica quando si utilizza Visual Basic Scripting Edition (VBScript) per eseguire un confronto numerico o un calcolo su un tipo di campo adNumeric (131).
Versione originale del prodotto: Visual Basic Script
Numero KB originale: 306916
Sintomi
Quando si utilizza VBScript per eseguire un confronto numerico o un calcolo su un tipo di campo adNumeric (131), possono essere visualizzati i seguenti messaggi di errore:
Messaggio di errore 1
Errore di runtime di Microsoft VBScript '800a000d'
Tipo non corrispondenteMessaggio di errore 2
Errore di runtime di Microsoft VBScript '800a01ca'
La variabile utilizza un tipo di automazione non supportato in VBScript
Causa
Questi messaggi di errore si verificano in quanto VBScript non può convertire correttamente i valori adNumeric a un tipo numerico valido. Questo comportamento è predefinito.
Risoluzione
È possibile utilizzare una delle due possibili soluzioni alternative seguenti:
- Utilizzare la funzione
CDbloCIntper convertire il campoadNumeric. - Utilizzare JScript, che non presenta questo comportamento.
È possibile riprodurre questo comportamento in una pagina ASP (Active Server Pages) o tramite un semplice file Visual Basic Script (.vbs). I passaggi seguenti illustrano come riprodurre il problema in un semplice file .vbs.
Passaggio 1 per riprodurre il comportamento: Creare la tabella Oracle
Eseguire il seguente script sul server Oracle per creare la tabella di esempio:
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;
Passaggio 2 per riprodurre il comportamento: Creare il file VBS
In Blocco note, creare un nuovo documento di testo denominato Test.vbs e incollare il codice seguente in 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")) * 100Modificare la stringa di connessione in modo che punti al server Oracle e fornisca un nome utente e una password validi.
Salvare Test.vbs sul desktop. Verrà generato un avviso per segnalare che la modifica dell'estensione potrebbe rendere il file instabile. Fare clic su OK per continuare. Se l'avviso non viene visualizzato, assicurarsi che le estensioni per i tipi di file conosciuti siano visibili.
Chiudere Test.vbs.
Sul desktop, fare doppio clic su Test.vbs per eseguire il codice. Viene visualizzato il messaggio di errore Tipo non corrispondente.
Rimuovere il commento dalla seguente riga di codice, che converte il campo
adNumericin un tipo di dati Double:MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100Commentare la seguente riga di codice:
MsgBox "Numeric field * 100 = " & oRS("CustID") * 100Chiudere e salvare Test.vbs.
Sul desktop, fai doppio clic su Test.vbs per eseguire nuovamente il codice. Verranno visualizzate due finestre di messaggio e nessun messaggio di errore.