Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如果记录集=nothing,我将收到一个错误_Ms Access_Vba - Fatal编程技术网

Ms access 如果记录集=nothing,我将收到一个错误

Ms access 如果记录集=nothing,我将收到一个错误,ms-access,vba,Ms Access,Vba,我编写了一个打开记录集的函数。在函数结束时,如果记录集尚未关闭,我希望关闭它,以便捕获错误 当我尝试运行该函数时,会出现以下编译错误:对象的使用无效。由于我没有尝试更改记录集对象的值,因此不应该出现此错误 Dim rs as Recordset ... If Not rs = Nothing Then rs.Close set rs = Nothing End If 更改这段代码: If Not rs Is Nothing Then rs.Close Set

我编写了一个打开记录集的函数。在函数结束时,如果记录集尚未关闭,我希望关闭它,以便捕获错误

当我尝试运行该函数时,会出现以下编译错误:对象的使用无效。由于我没有尝试更改记录集对象的值,因此不应该出现此错误

Dim rs as Recordset
...

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

更改这段代码:

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

另外,如果是清理程序关闭代码,则在使打开的对象无效之前,只需在错误恢复下一步时使用
,无需检查它们是否有效。

更改此代码:

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

另外,如果是清理过程关闭代码,在使打开的对象无效之前,只需在错误恢复下一步时使用
,无需检查它们是否有效。

看起来您正在尝试关闭已关闭的记录集

也许这会奏效:

If rs <> Nothing Then
    rs.Close
    rs = Nothing
End If
如果没有,那么
rs.Close
rs=无
如果结束

看起来您正试图关闭记录集,而记录集已经关闭

也许这会奏效:

If rs <> Nothing Then
    rs.Close
    rs = Nothing
End If
如果没有,那么
rs.Close
rs=无
如果结束

正确的语句应该是:

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

因为没有任何东西是表示未知的对象,所以它并不等于任何东西。甚至连它自己都没有。

正确的说法应该是:

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

因为没有任何东西是表示未知的对象,所以它并不等于任何东西。甚至连它本身都没有。

通过使用
DMax
函数,您可以大大简化代码。@Andre,谢谢!你不知道你帮了我多少。但最初,我的代码获取日期字段的最大值。它也适用于这种类型吗?是的,DMax也适用于日期/时间字段。通过使用
DMax
函数,您可以大大简化代码。@Andre,谢谢!你不知道你帮了我多少。但最初,我的代码获取日期字段的最大值。它也适用于该类型吗?是的,DMax也适用于日期/时间字段。编译错误也必须是
,如果不是rs,那么就
您的权利,我在If语句中犯了错误。最初它在我的代码中是
,如果不是
。我不想把它放在问题里,现在我改了。但是
如果rs Nothing
得到相同的错误。
rs=Nothing
也是错误的。因为rs是一个对象,所以应该使用
set
来更改它的值设置rs=Nothing`。也有编译错误,必须是
如果不是,则rs是Nothing,那么您的权利就是我在If语句中犯了错误。最初它在我的代码中是
,如果不是
。我不想把它放在问题里,现在我改了。但是
如果rs Nothing
得到相同的错误。
rs=Nothing
也是错误的。因为rs是一个对象,所以应该使用
set
来更改它的值设置rs=Nothing`。