添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文有助于解决使用 Visual Basic Scripting Edition (VBScript) 对 (131) 字段类型执行数值比较或计算 adNumeric 时出现的错误 (类型不匹配) 。

原始产品版本: Visual Basic 脚本
原始 KB 编号: 306916

使用 VBScript 对 adNumeric (131) 字段类型执行数值比较或计算时,可能会收到以下错误消息:

  • 错误消息 1

    Microsoft VBScript 运行时错误“800a000d”
    类型不匹配

  • 错误消息 2

    Microsoft VBScript 运行时错误“800a01ca”
    变量使用 VBScript 中不支持的自动化类型

    出现这些错误消息是因为 VBScript 无法将值正确转换 adNumeric 为有效的数值类型。 此行为是设计使然。

    可以使用以下两种可能的解决方法之一:

  • CDbl 使用或函数 CInt 转换字 adNumeric 段。
  • 使用不显示此行为的 JScript。
  • 可以在 Active Server Pages (ASP) 页或简单的 Visual Basic Script (.vbs) 文件中重现此行为。 以下步骤演示如何在简单的 .vbs 文件中重现问题。

    重现行为的步骤 1:创建 Oracle 表

    在 Oracle 服务器上运行以下脚本以创建示例表:

    DROP TABLE Cust;
    CREATE TABLE Cust (CustID NUMBER(22,6) PRIMARY KEY, Name VARCHAR2(50));
    INSERT INTO Cust VALUES(222,'Kent');
    INSERT INTO Cust VALUES(333,'Sally');
    COMMIT;
    

    重现行为的步骤 2:创建 VBS 文件

  • 在记事本中,创建名为 Test.vbs的新文本文档,并将以下代码粘贴到测试中。

    Set oConn = CreateObject("ADODB.Connection")
    oConn.open "Provider=MSDAORA;user id=User;" & _
    "password=password;data source=Oracle816Server;"
    set oRS = oConn.Execute("Select CustID FROM Cust")
    MsgBox "Numeric field type is 131." & vbcrlf & _
    "Field Type = " & ors.fields("CustID").type
    MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
    MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
    
  • 修改连接字符串,使其指向 Oracle 服务器并提供有效的用户名和密码。

  • 将Test.vbs保存到桌面。 应收到一条警告,指出更改扩展名可能会使文件不稳定。 单击"确定"以继续。 如果未看到此警告,可能需要确保显示已知文件类型的扩展名。

  • 关闭 Test.vbs

  • 在桌面上,双击 Test.vbs 运行代码。 收到 “类型不匹配 ”错误消息。

  • 取消注释以下代码行,将字 adNumeric 段转换为双数据类型:

    MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
    
  • 注释以下代码行:

    MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
    
  • 关闭并保存 Test.vbs

  • 在桌面上,双击 Test.vbs 再次运行代码,然后收到两个消息框,没有错误消息。

  •