ACCESS VBA RecordCountでレコード数を調べる方法

RecordCountでレコード数を調べる方法

ACCESSではADOを使って、VBAでテーブルに対して、追加・削除・更新などの操作を行うことができます。

その中で頻繁に利用するのは、レコード数を調べる処理です。

今回は、ACCESS VBAのADOでRecordCountでレコード数を調べる方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

RecordCount

ACCESSのADOでレコードセットのレコード数を調べる時に利用するのがRecordCountプロパティです。

以下の構文で利用します。

レコードセット名.RecordCount

例えば、レコードセットの名前がrst1の場合、


 rst1.RecordCount
 

となります。

ADOではレコードセットに対して、フィルターをかけてレコード抽出を行うことができますが、RecordCountを使えば抽出後のレコード数を調べることが可能です。

RecordCountの利用例

それでは実際にVBAのコードでRecordCountの利用例を紹介します。


Public Sub seikyu_kaijo()

'変数を定義
Dim cnn As ADODB.Connection
Dim rst1 As ADODB.Recordset

'変数にADOオブジェクトを代入
Set cnn = CurrentProject.Connection
Set rst1 = New ADODB.Recordset
rst1.CursorLocation = adUseClient

'レコードセットを取得
rst1.Open "TRN_売上", cnn, adOpenKeyset, adLockOptimistic

'請求にチェックが入ったレコードのみを抽出
rst1.Filter = "請求 = true"

'対象レコードが無い場合
If rst1.RecordCount = 0 Then

    '処理終了
    Exit Sub

'対象レコードがある場合
Else

    '請求チェックを解除
    Do Until rst1.EOF
    
        rst1!請求 = False
        rst1.MoveNext

    Loop

End If

'終了処理
rst1.Close: Set rst1 = Nothing
cnn.Close: Set cnn = Nothing

End Sub
 

上記はTRN_売上というテーブルの「請求」フィールドで、値がTrue(チェックボックスにチェックが入っている状態)のレコードを抽出し、一括で値をFalseに変えるプロシージャです。

RecordCountは、


 '対象レコードが無い場合
 If rst1.RecordCount = 0 Then

    '処理終了
    Exit Sub
  

で利用しています。
If文でRecordCountを使って、レコード数が0か否かを判定しているのですが、これが最も多いRecordCountの利用方法です。

一つ前の処理を見ていただくと、


 '請求にチェックが入ったレコードのみを抽出
 rst1.Filter = "請求 = true"
 

と、レコードセットに対してFilterプロパティで抽出を行っています。

レコードの抽出を行う際に注意したいのは、該当のレコードがない場合です。
この場合は、抽出後のレコードセットのレコード数が0になってしまうため、その後の処理を行うとエラーが出る懸念があります。

そこで、RecordCountでレコード数を調べ、レコード数が0であれば処理を中断する処理を追加するのです。
これを徹底しておくとエラーが起きにくいデータベースを作ることができますので注意しましょう。

以上、ACCESS VBAのADOでRecordCountでレコード数を調べる方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。