Error "error de coincidencia de tipo" de PRB: VBScript cuando el tipo de campo es adNumeric


Síntomas


Al realizar una comparación numérica o un cálculo en un tipo de campo adNumeric (131) mediante VBScript, se pueden devolver los errores siguientes:
Error de tiempo de ejecución de Microsoft VBScript ' 800a000d ' no coincide
Error en tiempo de ejecución de Microsoft VBScript la variable ' 800a01ca ' usa un tipo de automatización no admitido en VBScript

Causa


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

Resolución


Puede usar cualquiera de las dos soluciones alternativas siguientes:
  • Convierta el campo adNumeric por el uso de CDbl () (o CInt ()) como en el siguiente ejemplo:
       <%@ 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)   %>
    O bien
  • Usar JScript, porque JScript no tiene este comportamiento.

Más información


Pasos para reproducir el comportamiento

El código siguiente exhibe 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)    %>