ACCESS VBA 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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。