如何在VBS中打开ADODB.Recordset?WSF转VBS遇参数报错
WSF转VBS后ADODB.Recordset操作报错的解决方法
问题现象
在WSF引用的VBS文件中,以下操作ADODB记录集的代码可正常运行,用于向提前创建的空白文本文件写入数据:
Set objRS = CreateObject("ADODB.Recordset") objRS.Open "SELECT * FROM " & strTableName2, objConnection, adOpenStatic, adLockOptimistic, adCmdText
但将代码迁移到纯VBS文件后,objRS.Open抛出错误:参数类型错误、超出范围或相互冲突。
连接对象的创建代码如下:
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & destinationFolder & ";" & "Extended Properties=""text""" objConnection.Open strConnectionString
注意:WSF文件中包含以下引用标签,迁移到VBS时未被复制:
<reference object="ADODB.Recordset" /> <reference object="Atoll.Application" />
尝试移除adOpenStatic、adLockOptimistic、adCmdText这三个参数后,代码可执行更多步骤,但会出现记录集无法更新的错误。
根因分析
WSF通过<reference>标签可以自动加载ADODB库的内置常量,而纯VBS脚本没有默认加载这些常量定义,导致代码中使用的ad开头常量未被识别,进而引发参数不匹配或无效的问题。
解决方案
在纯VBS脚本的开头添加所需的ADODB常量定义:
Const adCmdText = 1 Const adLockOptimistic = 3 Const adOpenStatic = 3 Const adTypeBinary = 1 Const adSaveCreateOverWrite = 2
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

