Access

アクションクエリで処理した件数(レコード数)を取得する方法

Accessでアクションクエリを実行する方法はいくつかあります。

直接クエリを実行する方法・VBAからSQLコマンドを実行する方法・VBAでQueryDefオブジェクトを利用して実行する方法などです。

直接クエリを実行すれば処理したレコード件数は表示されますが、今日はVBAで実行した際の処理レコード数の確認方法をご紹介します。

アクションクエリで処理した件数(レコード数)を取得する方法

アクションクエリの実行後、処理対象となったレコード数を取得するには「RecordsAffected」プロパティを使います。

VBAからSQLコマンドを実行して処理件数を取得する

DatabaseオブジェクトのExecuteメソッドを利用して更新クエリ(SQLコマンド)を実行します。

その後、DatabaseオブジェクトのRecordsAffectedプロパティで処理件数を取得します。

Private Sub DoUpd()
    Dim myDb    As Database
    Dim strsql  As String
    
    Set myDb = CurrentDb
    
    strsql = "UPDATE テーブルA SET フラグ = 1 WHERE 条件 = TRUE"
    
    '更新クエリを実行
    myDb.Execute strsql
    
    'RecordsAffectedプロパティで取得した処理件数を表示
    MsgBox myDb.RecordsAffected & "件のレコードを更新しました", vbOKOnly + vbInformation

End Sub

 

VBAからQueryDefオブジェクトを利用して処理件数を取得する

QueryDefオブジェクトを使うメリットは、あらかじめ保存した更新クエリをパラメータで可変にできることですよね。

今回はパラメータクエリ(アクションクエリ)をQueryDefオブジェクトのExecuteメソッドで実行します。

その後、QueryDefオブジェクトのRecordsAffectedプロパティで処理件数を取得します。

Private Sub DoUpd()
    Dim myDb    As Database
    Dim strsql  As String
    
    Set myDb = CurrentDb
    Set myQdef = myDb.QueryDefs("更新クエリ")
    With myQdef
        'パラメータに値をセットしてクエリを実行
        .Parameters("パラメーター") = 1
        .Execute
        'RecordsAffectedプロパティで取得した処理件数を表示
        MsgBox .RecordsAffected & " 件のレコードを更新しました", vbOKOnly + vbInformation
    End With
    
End Sub

 

パラメータクエリーに引数を渡してVBAで実行するパラメータクエリー(アクションクエリー)に引数を渡してVBAで実行するサンプルプログラムです。 コピペでご利用ください。※ご利用は...

RecordsAffectedプロパティは処理後の件数を取得するプロパティなので、アクションクエリ実行前に対象レコード数を把握する必要があれば、別途Dcount()関数などを利用して取得してください。

まとめ

アクションクエリはDBを直接大量に更新することができますので、誤った条件で更新してしまうと大惨事になります。

事前の件数確認、処理後の件数確認は重要ですので、ぜひ使ってみてください。

ABOUT ME
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
今のスキルのままで大丈夫?

あなたのスキル。今のままで大丈夫ですか?

時代のニーズに合った開発スキルを身につけてあなたの価値を高めましょう。

\オンラインでも教室でも学べるおすすめのスクール/

TECH::CAMP(エンジニアスクール)

まずは基礎から・・・という方はProgateUdemyどっとインストールなどがおすすめ!

スキルアップについて詳しくはこちら