PRB: VBScript "type nesutampa" klaida, kai lauko tipas yra adNumeric


Simptomai


Atliekant skaitinį palyginimą arba skaičiavimą "adNumeric" (131) lauko tipas naudojant "VBScript", gali būti grąžintos šios klaidos:
"Microsoft VBScript Runtime" klaida "800a000d" tipo neatitikimas
"Microsoft" VBScript vykdyklės klaida ' 800a01ca ' kintamasis naudoja automatizavimo tipą, nepalaikomą "VBScript"

Priežastis


Įvyksta klaidų, nes "VBScript" negali tinkamai konvertuoti Adskaitinių reikšmių į galiojantį skaičių tipą.

Sprendimas


Galite naudoti vieną iš šių dviejų galimų sprendimų:
  • Konvertuokite lauką adNumeric naudodami CDbl () (arba CInt ()), kaip parodyta toliau pateiktame pavyzdyje:
       <%@ 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)   %>
    arba
  • Naudokite JScript, nes JScript nerodo šio veikimo būdo.

Daugiau informacijos


Veikimo atkūrimo veiksmai

Toliau pateiktame kode eksponuojama aukščiau paminėta klaida:
<%    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)    %>