Vba MS access:openrecordset中的参数,并检查其是否为null

Vba MS access:openrecordset中的参数,并检查其是否为null,vba,ms-access,Vba,Ms Access,我正在尝试下面这样的东西 formName = "CutomerF" checkboxName = "Check110" Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM CheckBoxT WHERE [Form Name] = " & formName & " AND [Checkbox Name] = " & checkboxName) 在查询之后,我想检查r

我正在尝试下面这样的东西

formName = "CutomerF"
 checkboxName = "Check110"
 Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM CheckBoxT WHERE [Form Name] = " & formName & " AND [Checkbox Name] = " & checkboxName)

在查询之后,我想检查rs是否为null?如果它不是空的,那么它有多少个元素?如何执行此操作?

您可以使用BOF属性查看记录集是否有任何记录。您可以使用RecordCount查看它有多少条记录。对于DAO记录集,您应该首先使用.MoveLast方法,例如

If rs.BOF Then <Do Something>

rs.MoveLast
MsgBox "There are " & rs.RecordCount & " records."
如果为rs.BOF,则
莫夫拉斯特
MsgBox“有”&rs.RecordCount和“记录”

您可以使用BOF属性查看记录集是否有任何记录。您可以使用RecordCount查看它有多少条记录。对于DAO记录集,您应该首先使用.MoveLast方法,例如

If rs.BOF Then <Do Something>

rs.MoveLast
MsgBox "There are " & rs.RecordCount & " records."
如果为rs.BOF,则
莫夫拉斯特
MsgBox“有”&rs.RecordCount和“记录”

使用rs.RecordCount属性

IF rs.recordCount > 0 then 
   rs.movelast
   msg "There are " & rs.recordCount & " record(s)"
end if
在DAO中,打开包含记录的记录集时,RecordCount的值为1。如果没有记录或无法确定是否有记录,则值为0。在ADO中,如果没有记录或无法确定记录数,RecordCount将返回-1。任何一种检查大于0的方法都将确定您是否有ADO和DAO的记录

单独使用BOF和EOF对ADO不起作用,您可以这样做,但您必须进行两次检查。如果在打开记录集时两者都为真,则记录集为空。当ADO记录集在没有记录的情况下打开时,BOF和EOF都设置为true。
使用rs.RecordCount属性

IF rs.recordCount > 0 then 
   rs.movelast
   msg "There are " & rs.recordCount & " record(s)"
end if
在DAO中,打开包含记录的记录集时,RecordCount的值为1。如果没有记录或无法确定是否有记录,则值为0。在ADO中,如果没有记录或无法确定记录数,RecordCount将返回-1。任何一种检查大于0的方法都将确定您是否有ADO和DAO的记录

单独使用BOF和EOF对ADO不起作用,您可以这样做,但您必须进行两次检查。如果在打开记录集时两者都为真,则记录集为空。当ADO记录集在没有记录的情况下打开时,BOF和EOF都设置为true。

您还可以使用recordcount属性查看您是否有记录:如果rs.recordcount>0,则仅对这些ADO、BOF进行注释将无法正确确定您是否没有记录。在ADO中,如果rs为空,则BOF和EOF设置为真。请参阅此处的文档:您还可以使用recordcount属性查看是否有记录:如果rs.recordcount>0,则只需注意这些ADO、BOF将无法正常工作以确定是否没有记录。在ADO中,如果rs为空,则BOF和EOF设置为真。请参阅此处的文档: