VbScript Type type mismatch when field type is adNumeric

Dieser Artikel hilft Ihnen, den Fehler "Typkonflikt" zu beheben, der auftritt, wenn der Feldtyp lautet adNumeric.

Ursprüngliche Produktversion: Internetinformationsdienste
Ursprüngliche KB-Nummer: 195180

Problembeschreibung

Wenn Sie einen numerischen Vergleich oder eine Berechnung für einen adNumeric (131) Feldtyp mit VBScript durchführen, werden möglicherweise die folgenden Fehler zurückgegeben:

Microsoft VBScript-Laufzeitfehler '800a000d'
Typenkonflikt
Microsoft VBScript-Laufzeitfehler '800a01ca' Variable verwendet einen Automatisierungstyp, der in VBScript nicht unterstützt wird.

Ursache

Die Fehler treten auf, da VBScript Werte nicht ordnungsgemäß in einen gültigen numerischen Typ konvertieren adNumeric kann.

Lösung

Sie können eine der folgenden beiden möglichen Problemumgehungen verwenden:

  • Konvertieren Sie das adNumeric Feld wie CInt() CDbl() im folgenden Beispiel:

     <%@ 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)
     %>
    
  • Verwenden Sie JScript, da JScript dieses Verhalten nicht aufweist.

Schritte zum Reproduzieren des Verhaltens

Der folgende Code zeigt den oben genannten Fehler an:

<%
 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)
 %>