【问题标题】:Problem with RecordCount in MS-access 2010 VBAMS-access 2010 VBA 中的 RecordCount 问题
【发布时间】:2020-04-27 10:54:10
【问题描述】:

我试图了解我在下面的代码 sn-p 中做错了什么。我正在读取一些具有特定客户端 ID 的会话记录,并将返回的记录放入 LineGrid 以供进一步处理。问题在于行 NoL = Rs.RecordCount 查询返回多行(我可以在开发环境中看到这个)。因此,在一个示例中,即使 Rs.Recordcount 更大 (3),NoL 也被赋值为 1。我可以直接在调试环境中查看。

有可能表明记录数是 3,只有一行插入到 LineGrid 中

Dim Db As DAO.Database
Dim RsCL As DAO.Recordset 'ClientSession

Dim NoL As Integer
Dim LineGrid As Variant

Set RsCL = Db.OpenRecordset("Select * From ClientSession WHERE ClientID = " & CDID)
If RsCL.EOF Then
    MsgBox ("Nothing to Invoice")
    Exit Sub
    End If
'RsCL.MoveFirst
NoL = RsCL.RecordCount
LineGrid = RsCL.GetRows(NoL)
RsCL.Close

我试过了

  1. 将 NoL 的数据类型更改为 Long - 无效
  2. 在 GetRows 属性中将 Rs.Count 替换为 (NoL) - 无效
  3. 如果我将 NoL 替换为一个值,例如100 然后代码工作正常然后所有记录都加载到 LineGrid 但我没有真正的记录数。

  4. 我已尝试使用 .movefirst 属性移动记录指针(您会注意到该行当前已被注释掉)- 无效

最终我需要 LineGrid 来包含表中的数据和 NoL 来获得真实的记录数

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    当您打开记录集时,并非所有记录都会立即加载。为了强制加载所有记录,您需要先移至最后一条记录,然后再移回第一条记录:

        RsCL.MoveLast
        RsCL.MoveFirst
    

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2014-11-30
      相关资源
      最近更新 更多