2016-01-20 39 views
0

我写了一个打开记录集的函数。在函数的结尾,我想关闭记录集,如果它尚未关闭,出于错误捕获的目的。如果记录集=无,我得到一个错误

当我尝试运行该函数时,出现以下编译错误:对象的无效使用。因为我没有试图改变记录集对象的值,所以不应该出现这个错误。

Dim rs as Recordset 
... 

If Not rs = Nothing Then 
    rs.Close 
    set rs = Nothing 
End If 
+1

您可以使用'DMax'功能大量简化您的代码。 – Andre

+0

@安德烈,谢谢!你不知道你帮了我多少。但是最初,我的代码获得了** date **字段的最大值。它也适用于这种类型吗? – MJH

+0

是的,DMax也在日期/时间字段上工作。 – Andre

回答

2

正确的说法应该是:

If Not rs is Nothing Then 
    rs.Close 
    set rs = Nothing 
End If 

由于没有什么是一个对象,这意味着未知,它不等于任何。甚至不是自己。

2

更改这段代码:

If Not rs Is Nothing Then 
    rs.Close 
    Set rs = Nothing 
End If 

而且如果它的清理程序关闭代码,打开的对象失效之前只使用On Error Resume Next,没必要检查它们是否有效。

-1

它看起来就像它试图关闭记录集时它已经关闭。

也许这可能工作:

If rs <> Nothing Then 
    rs.Close 
    rs = Nothing 
End If 
+1

也编译错误,它必须是'If Not Is Is Nothing Then' – Andre

+0

您的权利是我在If语句中犯了一个错误。原来它是'如果不是'在我的代码。我试图把它放在问题中,现在我改变了它。但是'如果rs Nothing'得到相同的错误。 – MJH

+0

'rs = nothing'也是错误的。由于rs是一个**对象**,所以你应该使用'set'来改变它的值。 '设置rs = Nothing'。 – MJH

相关问题