【问题标题】:VBA Access SQL SELECT Query only returning one recordVBA Access SQL SELECT查询只返回一条记录
【发布时间】: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 字符串,但我在尝试排除故障时已将其缩减为最基本的,但问题仍然存在。有谁知道为什么会这样?

谢谢,

谭。

【问题讨论】:

    标签: sql ms-access vba ms-access-2010


    【解决方案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 & "'")
    

    在你真正需要之前不要玩记录集

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多