「access vba recordcount 取得できない」
「Access VBA RecordCount 件数 とれない」
といった(定番の)検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。
ADO(ActiveX Data Objects)の場合もあるとは思いますが、まずはDAO(Data Access Objects)の簡単なコードを試してみることをおすすめします。
DAOのRecordCountを取得するサンプルプロシージャ
「q_sample」クエリの存在するaccdbで、以下のSubプロシージャを実行してください。
Dim db As DAO.Database
Set db = CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("q_sample", dbOpenSnapshot)
rs.MoveLast
MsgBox rs.RecordCount
Set rs = Nothing
db.Close
Set db = Nothing
End Sub
RecordCountを取得するには
正常に実行できれば、q_sampleのレコード数がメッセージボックスに表示されます。
つづいて、
rs.MoveLast
をコメントアウトしてから、再度実行してください。
今度は「1」が表示されるはずです。
(Recordsetの種類によっては不要な場合もありますが)レコード数を取得するには、事前にMoveLastメソッドで最後のレコードまで一旦移動する必要があります。
Microsoft公式の「DAO レコードセットのレコード数をカウントする」ページにも、そのような記述があります。
それから、本当にRecordCountを取得する必要があるのかは、今一度考えてみてください。
Recordset.Movelastメソッドの公式ドキュメントに、以下の記述があります。
ただし、このような目的で MoveLast を使用すると、アプリケーションのパフォーマンスが低下する場合があります。 MoveLast を使用してレコード数を取得するのは、新しく開かれた Recordset の正確なレコード数をどうしても取得する必要がある場合だけにしてください。
最終更新日時:2024-02-03 16:31
Home » Access VBA » Access VBAでRecordCountが取得できない