我正在使用Access 2010中的VBA,我有一个奇怪的问题。我正在尝试从表中提取记录,但我的SELECT查询只返回一条记录。
表中有三条记录,但记录集只获得第一条记录。
这是我的代码。
Dim cc As String
Dim DB As Database
Dim rst As recordset
Dim sqlstr As String
Dim e As Integer
cc = CmbClass.Text
If cc = "" Then Exit Sub
sqlstr = "SELECT * FROM Students" 'WHERE CCode ='" & cc & "'"
Set DB = CurrentDb
Set rst = DB.OpenRecordset(sqlstr)
'Debug.Print rst.Fields(0)
e = rst.RecordCount
Debug.Print e
If e = 0 Then Exit Sub
e的值连续为1,而不是3.正如您所看到的,我最初有一个更复杂的SQL字符串,但我在尝试进行故障排除时将其剪切为最基本的,但问题仍然存在。有谁知道为什么会这样?
谢谢,
担。
答案 0 :(得分:4)
从内存中你需要发出rst.MoveLast
才能可靠地获得这样的记录数:
sqlstr = "SELECT * FROM Students" 'WHERE CCode ='" & cc & "'"
Set DB = CurrentDb
Set rst = DB.OpenRecordset(sqlstr)
rst.MoveLast
e = rst.RecordCount
此外,您可能需要考虑使用SELECT COUNT(*) FROM Students
并读取记录集中的值,而不是通过记录来获取计数。使用此查询应该更有效。
答案 1 :(得分:3)
另一种方法是DCount
。
e = DCount("*","Students","CCode ='" & cc & "'")
在您真正需要
之前,不要使用记录集