Partager via


Incompatibilité du type de type VBScript lorsque le type de champ est adNumeric

Cet article vous aide à résoudre l’erreur d’incompatibilité de type qui se produit lorsque le type de champ est adNumeric.

Version du produit d’origine : Internet Information Services
Numéro de la base de connaissances d’origine : 195180

Symptômes

Lorsque vous effectuez une comparaison numérique ou un calcul sur un adNumeric type de champ (131) à l’aide de VBScript, les erreurs suivantes peuvent être retournées :

Erreur d’exécution Microsoft VBScript « 800a000d »
Incompatibilité de type
Erreur d’exécution Microsoft VBScript « 800a01ca » Variable utilise un type Automation non pris en charge dans VBScript

Cause

Les erreurs se produisent car VBScript ne peut pas convertir adNumeric correctement les valeurs en un type numérique valide.

Résolution

Vous pouvez utiliser l’une des deux solutions de contournement possibles suivantes :

  • Convertissez le adNumeric champ à l’aide CDbl() ou CInt() comme dans l’exemple suivant :

     <%@ LANGUAGE="VBScript"%>
     <%
     Set oConn = Server.CreateObject("ADODB.Connection")
     oConn.Open "MyDSN", "MyUserID", "MyPassWord"
     set oRS = oConn.Execute("Select list_price FROM DEMO.PRICE")
     Response.Write("List Price * 100 = " & CDbl(oRS("list_price")) * 100)
     %>
    
  • Utilisez JScript, car JScript n’affiche pas ce comportement.

Étapes de reproduction du comportement

Le code suivant présente l’erreur mentionnée ci-dessus :

<%
 Set oConn = Server.CreateObject("ADODB.COnnection")
 oConn.Open "MyDSN", "MyUserID", "MyPassWord"
 set oRS = oConn.Execute("Select list_price FROM DEMO.PRICE")'This is the bad line of code, "list_price" is being returned as
 'type adNumeric.
 Response.Write("List Price * 100 = " & oRS("list_price") * 100)
 %>