Home » Access VBA » Access VBAでRecordCountが取得できない

Access VBAでRecordCountが取得できない

動作検証バージョン:Windows 11 Home + 64bit Access バージョン 2402(ビルド17328.20000クイック実行)ベータチャネル

「access vba recordcount 取得できない」
「Access VBA RecordCount 件数 とれない」
といった(定番の)検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

[スポンサードリンク]

ADO(ActiveX Data Objects)の場合もあるとは思いますが、まずはDAO(Data Access Objects)の簡単なコードを試してみることをおすすめします。

DAOのRecordCountを取得するサンプルプロシージャ

「q_sample」クエリの存在するaccdbで、以下のSubプロシージャを実行してください。

Sub RecordCountを取得する()
 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

 rs.Close 
 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が取得できない

Copyright © インストラクターのネタ帳 All Rights Reserved.

.