VBScript Incompatibilidade de tipo de tipo quando o tipo de campo é adNumeric

Este artigo ajuda a resolver o erro de incompatibilidade de tipo que ocorre quando o tipo de campo é adNumeric.

Versão original do produto: Serviços de Informações da Internet
Número original do KB: 195180

Sintomas

Quando você executa uma comparação ou cálculo numérico em um tipo de adNumeric campo (131) usando VBScript, os seguintes erros podem ser retornados:

Erro de tempo de execução do Microsoft VBScript '800a000d'
Tipos incompatíveis
A variável de erro de tempo de execução do Microsoft VBScript '800a01ca' usa um tipo de automação não suportado no VBScript

Causa

Os erros ocorrem porque o VBScript não pode converter adNumeric corretamente os valores em um tipo numérico válido.

Solução

Você pode usar uma das duas soluções alternativas possíveis a seguir:

  • Converta o adNumeric campo usando CDbl() ou CInt() como no exemplo a seguir:

     <%@ 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 o JScript não exibe esse comportamento.

Etapas para reproduzir o comportamento

O código a seguir exibe o erro mencionado acima:

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