Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous aide à résoudre une erreur (incompatibilité de type) qui se produit lorsque vous utilisez Visual Basic Scripting Edition (VBScript) pour effectuer un calcul ou une comparaison numérique sur un type de champ adNumeric
(131).
Version du produit d’origine : Script Visual Basic
Numéro de base de connaissances d’origine : 306916
Symptômes
Lorsque vous utilisez VBScript pour effectuer une comparaison ou un calcul numérique sur un type de champ adNumeric
(131), les messages d’erreur suivants peuvent apparaître :
Message d’erreur 1
Erreur d’exécution Microsoft VBScript « 800a000d »
Incompatibilité de typeMessage d’erreur 2
Erreur d’exécution Microsoft VBScript « 800a01ca »
La variable utilise un type d’automatisation non pris en charge dans VBScript
Cause
Ces messages d’erreur s’affichent car VBScript ne peut pas convertir correctement les valeurs adNumeric
en type numérique valide. Ce comportement est fait exprès.
Résolution
Vous pouvez utiliser l’une des deux solutions de contournement suivantes :
- Utilisez la fonction
CDbl
ouCInt
pour convertir le champadNumeric
. - Utilisez JScript, qui ne présente pas ce comportement.
Vous pouvez reproduire ce comportement dans une page Active Server Pages (ASP) ou via un fichier Visual Basic Script (.vbs) simple. Les étapes suivantes montrent comment reproduire le problème dans un fichier .vbs simple.
Étape 1 pour reproduire le comportement : Créer la table Oracle
Exécutez le script suivant sur votre serveur Oracle pour créer l’exemple de table :
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;
Étape 2 pour reproduire le comportement : Créer le fichier VBS
Dans le Bloc-notes, créez un document texte nommé Test.vbs, puis collez le code suivant dans le 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")) * 100
Modifiez la chaîne de connexion afin qu’elle pointe vers votre serveur Oracle et fournisse un nom d’utilisateur ainsi qu’un mot de passe valides.
Enregistrez Test.vbs sur votre bureau. Un avertissement doit apparaître, indiquant que la modification de l’extension peut rendre le fichier instable. Pour continuer, cliquez sur OK . Si cet avertissement ne s’affiche pas, assurez-vous que vous affichez les extensions pour les types de fichiers connus.
Fermez Test.vbs.
Sur votre bureau, double-cliquez sur Test.vbs pour exécuter le code. Le message d’erreur Incompatibilité de type s’affiche.
Supprimez les marques de commentaire de la ligne de code suivante, qui convertit le champ
adNumeric
en type de données double :MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
Commentez la ligne de code suivante :
MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
Enregistrez et fermez Test.vbs.
Sur votre bureau, double-cliquez sur Test.vbs pour exécuter à nouveau le code. Deux boîtes de message s’affichent, mais aucun message d’erreur n’apparaît.