Error de coincidencia de tipos de VBScript cuando el tipo de campo es adNumeric

Este artículo le ayuda a resolver el error de coincidencia de tipos que se produce cuando el tipo de campo es adNumeric.

Versión del producto original: Internet Information Services
Número de KB original: 195180

Síntomas

Al realizar una comparación numérica o un cálculo en un adNumeric tipo de campo (131) mediante VBScript, se pueden devolver los siguientes errores:

Error de tiempo de ejecución de Microsoft VBScript “800a000d”
Error de coincidencia de tipos
Error en tiempo de ejecución de Microsoft VBScript "800a01ca" Variable usa un tipo de Automatización no admitido en VBScript

Causa

Los errores se producen porque VBScript no puede convertir adNumeric correctamente los valores en un tipo numérico válido.

Solución

Puede usar cualquiera de las dos posibles soluciones posibles:

  • Convierta el adNumeric campo mediante CDbl() o CInt() como en el ejemplo siguiente:

     <%@ 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)
     %>
    
  • Use JScript, porque JScript no muestra este comportamiento.

Pasos para reproducir el comportamiento

El código siguiente muestra el error mencionado anteriormente:

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