MS-access 2010 VBA中的RecordCount问题

问题描述 投票:0回答:1

我正在尝试了解下面的代码片段中我做错了什么。我正在读取具有特定客户端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才具有真实记录数

ms-access access-vba ms-access-2010
1个回答
0
投票

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

    RsCL.MoveLast
    RsCL.MoveFirst

问候,

© www.soinside.com 2019 - 2024. All rights reserved.