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

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

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

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

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

まとめ

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

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

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次