Я пытаюсь понять, что я сделал неправильно в приведенном ниже фрагменте кода. Я читаю некоторые записи сеанса с указанным c идентификатором клиента и помещаю записи, возвращенные в LineGrid для дальнейшей обработки. Проблема со строкой NoL = Rs.RecordCount. Запрос возвращает несколько строк (я вижу это в среде разработки). Таким образом, в одном примере NoL присваивается значение 1, хотя Rs.Recordcount больше (3). Я могу проверить это непосредственно в среде отладки.
С риском утверждения очевидного, даже если количество записей равно 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
Я пытался
- Изменение типа данных NoL на Long - без эффекта
- Установка Rs.Count вместо (NoL) в свойстве GetRows - без эффекта
Если я заменяю NoL значением, например 100, тогда код работает нормально, тогда все записи загружаются в LineGrid, но у меня нет точного количества записей.
Я попытался переместить запись указатель со свойством .movefirst (вы заметите, что строка в настоящий момент закомментирована) - Нет эффекта
В конечном счете мне нужно, чтобы LineGrid содержал данные из таблицы и NoL, чтобы иметь истинное количество записей