我有
set newcon = Server.CreateObject("ADODB.Connection")
如果不是,我需要:
set newcon = nothing
如何判断它是对象还是什么?
我试过了
newcon is nothing
我得到object required
如果我尝试isobject
或isnull
或isempty
,则不会给出真正的布尔值
有什么我可以尝试的确有效吗?
答案 0 :(得分:2)
如果您的代码类似于
,则会收到错误对象Dim Obj
MsgBox Obj Is Nothing
这里,在上面的代码中你没有用任何对象初始化Obj,如果你试图销毁一个不存在或初始化的对象,那么很明显你会得到一个错误“Object required”来销毁那个对象。
现在尝试以下
Dim Obj
Set Obj = CreateObject("Excel.Application") 'Creating an object
MsgBox Obj Is Nothing 'Returns False
Set Obj = Nothing 'Destroying an object
MsgBox Obj Is Nothing 'Returns True
我们在上面的代码中做了什么,
我们使用Set Obj = CreateObject("Excel.Application")
语句创建了一个对象。
然后我们使用MsgBox Obj Is Nothing
语句验证我们创建的对象是否存在。当对象存在时,返回“True”。
现在,随着要求的出现,我们将取消关联,即使用语句Set Obj = Nothing
销毁对象。
在最后一个声明MsgBox Obj Is Nothing
中,如果对象Obj
被解除关联,即被销毁,我们将再次进行验证。
答案 1 :(得分:1)
我相信你在使用Is Nothing进行测试之前意外改变了newcon:
>> set newcon = CreateObject("ADODB.Connection")
>> WScript.Echo 0, IsObject(newcon)
>>
0 -1
>> set newcon = Nothing
>> WScript.Echo 1, IsObject(newcon)
>>
1 -1
>> WScript.Echo 2, newcon Is Nothing
>>
2 -1
>> newcon = "oops"
>> WScript.Echo 3, newcon Is Nothing
>>
Error Number: 424
Error Description: Object required
>> WScript.Echo 4, newconn Is Nothing ' oops
>>
Error Number: 424
Error Description: Object required
如果你得到错误434,那么newcon(或你真正测试的变量)不会保留一个对象或没有。
答案 2 :(得分:0)
我认为这是一个老问题,然而,发布的答案是正确但不完整的,因此我会发布我的方式:
Dim Obj
Set Obj = CreateObject("ADODB.Connection")
If IsObject(Obj) Then
If Not Obj Is Nothing Then
Set Obj = Nothing
End If
End If
WScript.Echo "Is Nothing: " & (Obj Is Nothing)