问题描述
无论何时设置,我一直在尝试验证并正确关闭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 (将#修改为@)