如何解决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 举报,一经查实,本站将立刻删除。