VBScript

问题描述

无论何时设置,我一直在尝试验证并正确关闭VBScript中的RecordSet。我在一个论坛上找到了一个代码示例,但是当我尝试检查它时,似乎ObjectStateEnum的值adStateOpen不可用。

这是我的TestVbs.vbs代码

Dim objRecordSet

Set objRecordSet = CreateObject("ADODB.Recordset")

If Not objRecordSet Is nothing Then
    If (objRecordSet.State And adStateOpen) = adStateOpen Then 
        objRecordSet.Close
    End If
    Set objRecordSet = nothing
End If

在此行“ objRecordSet.Close”上返回“关闭对象时不允许操作”错误。就像它说的那样,它正在试图关闭尚未打开的东西。为了进行调试,我在If语句之前添加了以下几行:

MsgBox(adStateOpen) 'Returns an empty string
MsgBox(CInt(adStateOpen)) 'Returns 0
MsgBox(objRecordSet.State) 'Returns 0
MsgBox((objRecordSet.State And adStateOpen)) 'Returns 0
MsgBox((objRecordSet.State And adStateOpen) = adStateOpen) 'Returns True

我能做得到的唯一方法是在脚本的开头添加以下常量:

Const adStateClosed = &H00000000
Const adStateOpen = &H00000001
Const adStateConnecting = &H00000002
Const adStateExecuting = &H00000004
Const adStateFetching = &H00000008

我不知道缺少什么,也许我需要导入一些库才能访问这些枚举值。但是可以肯定的是,每当必须使用RecordSet对象时,在每个VBScript中重新声明这些枚举不是一个好的解决方案。我不是VBScript的专家,我只是在处理一些旧代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...