Вопрос
Открываю базу с помощью DAO:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = DAO.OpenDatabase(App.Path & "\apiguide.mdb") _
strSQL = "SELECT * FROM Groups WHERE parentID=0;"
Set rs = db.OpenRecordset(strSQL)
rs.MoveFirst
Дальше начинаю считывать записи.
Так вот. Как только я открыл рекордсет, rs.RecordCount равен единице, хотя на самом деле записей около десятка. Что делать?
Ответ
Свойство RecordCount показывает не сколько всего записей у данного рекордсета, а сколько записей было обработанно. При инициализации и возврате рекордсета, объект ДАО не знает, сколько записей ему вернул сервер (точно знает о существовании только одной — самой первой записи, на которую и устанавливает курсор). Свойство MoveLast заставляет ДАО обработать все записи в рекордсете, от чего и свойство RecordCount устанавливается равным числу етих записей.
Что касается АДО, то там это «лечится» установкой свойства
RS.CursorLocation = adUseClient
перед откытием рекордсета.
Viaceslavas Kaleda
А можно выполнить дополнительный запрос:
DIM DB as DataBase
Сергей Л.
DIM RS as Recordset
Set DB = DBEngine.OpenDatabase("MyBase.mdb")
Set RS = Db.OpenRecordset("SELECT COUNT(*) as RecCount " & _
"FROM MyTable",dbopenforwardonly)
Затем получаешь:
rCount = RS!RecCount
Copyright 2000-2004 Сообщество Чайников
Контактная информация