Vba 记录集克隆记录计数是否等于0?
我有点困惑,为什么找不到记录计数。我的表“tblDatabase”有3条记录。我希望它能克隆记录集,这样我们就不会改变任何记录。我们只想在浏览数据时读取它们,然后进一步浏览已勾选的项目(在本例中,“SELECT”字段设置为True) 谁能告诉我我做错了什么?RecordCount一直返回为0。尝试使用RS1.MoveLast、MoveNext等。。。但它还是一样。非常感谢任何对我所做错事的帮助Vba 记录集克隆记录计数是否等于0?,vba,ms-access,Vba,Ms Access,我有点困惑,为什么找不到记录计数。我的表“tblDatabase”有3条记录。我希望它能克隆记录集,这样我们就不会改变任何记录。我们只想在浏览数据时读取它们,然后进一步浏览已勾选的项目(在本例中,“SELECT”字段设置为True) 谁能告诉我我做错了什么?RecordCount一直返回为0。尝试使用RS1.MoveLast、MoveNext等。。。但它还是一样。非常感谢任何对我所做错事的帮助 Set RS1 = CurrentDb.OpenRecordset("tblDatabase").Cl
Set RS1 = CurrentDb.OpenRecordset("tblDatabase").Clone
RS1.MoveFirst
Debug.Print RS1.RecordCount
For i = 1 To RS1.RecordCount
If RS1.Fields("Select") = True Then
strRequestNo = strRequestNo & IIf(Len(strRequestNo) = 0, "", ",") & Str(RS1.Fields("Request No"))
strName = RS1.Fields("Name")
'Pops up the Approval Dialog for user to Name + Date Approved.
'The Code should not continue until the form is closed.
DoCmd.OpenForm "frmClientAuthorization", acNormal, , , acFormEdit, acDialog, strRequestNo & "|" & strClientName
End If
RS1.MoveNext
Next i
你真的不需要
如果您想要只读记录集,我建议在打开记录集时使用RecordsetOptionEnum值dbReadOnly:
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("tblDatabase", dbOpenTable)
关于返回零记录计数,您需要指定打开表类型记录集:
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("tblDatabase", dbOpenTable)
此外,在我看来,还有两种更优雅的方法可以循环记录集:
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("tblDatabase", dbOpenTable)
嗯,
Eric如果使用“for i=…”则需要执行
rs1.movelast
myvar=rs1.recordcount
rs1.1首先
以了解有多少条记录与记录集匹配
在for next循环中使用myvar变量
执行任务的更简洁的方法是使用以下方法:
RS1.MoveLast
Debug.Print RS1.RecordCount
Do Until rs1.EOF = True
If RS1.Fields("Select") = True Then
strRequestNo = strRequestNo & IIf(Len(strRequestNo) = 0, "", ",") & Str(RS1.Fields("Request No"))
strName = RS1.Fields("Name")
'Pops up the Approval Dialog for user to Name + Date Approved.
'The Code should not continue until the form is closed.
DoCmd.OpenForm "frmClientAuthorization", acNormal, , , acFormEdit, acDialog, strRequestNo & "|" & strClientName
End If
RS1.MoveNext
Loop
是第三行(Debug.Print RS1.RecordCount)返回零吗?是的,第三行返回0,但是,我已将第二行更改为RS1.MoveLast,Debug.Print仍然返回0。我尝试在下面回答它。尝试将
CurrentDb.OpenRecordset(“tblDatabase”).Clone
更改为CurrentDb.OpenRecordset(“tblDatabase”),dbOpenSnapshot)
。抱歉-我将第1行更改为:Set RS1=CurrentDb.OpenRecordset(“tblDatabase”),但它仍然保持不变。我想这就是你说的“摆脱克隆人”的意思吧?不过,谢谢你的建议。是的,我做了,我大错特错了。这要追溯到十年前,所以我有点生疏了。您确定数据库中有一个名为tblDatabase的表,并且该表中有记录吗?可能CurrentDb没有指向您认为它所在的位置。可能您需要指定您正在打开一个表:Set rsTable=dbs.OpenRecordset(“Table1”,dbOpenTable)