VBA Access SQL SELECT查询只返回一条记录
Posted
技术标签:
【中文标题】VBA Access SQL SELECT查询只返回一条记录【英文标题】:VBA Access SQL SELECT Query only returning one record 【发布时间】:2012-08-12 05:01:04 【问题描述】:我在 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 字符串,但我在尝试排除故障时已将其缩减为最基本的,但问题仍然存在。有谁知道为什么会这样?
谢谢,
谭。
【问题讨论】:
【参考方案1】:您需要根据记忆发出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
并从记录集中读取值,而不是通过记录来获取计数。使用这个查询应该更有效。
【讨论】:
谢谢!添加rst.MoveLast
解决了问题!【参考方案2】:
另一种方法是DCount
。
e = DCount("*","Students","CCode ='" & cc & "'")
在你真正需要之前不要玩记录集
【讨论】:
以上是关于VBA Access SQL SELECT查询只返回一条记录的主要内容,如果未能解决你的问题,请参考以下文章
在access中用vba如何把SQL语句查询到的一个值赋给变量?
具有更多条件的日期之间的 SQL 查询(VBA Excel - Access)