#504 | アクションクエリの処理件数を調べるには? | VBA | |
DocmdオブジェクトのOpenQueryメソッドなどでアクションクエリを実行した場合には、事前に処理件数が実行確認メッセージとして表示されます。一方、VBAを使って、Databaseオブジェクトの「RecordsAffected」プロパティの値を調べると、直前に実行されたアクションクエリで実際に処理された(影響を与えた)レコード数を取得することができます。 このプロパティはDatabaseオブジェクトのプロパティですので、まずはDatabaseオブジェクトのExecuteメソッドを使ってアクションクエリとなるSQL文を実行する必要があります。あとは、単にRecordsAffectedプロパティの値を調べるだけです。 次の例では、「商品」テーブルに対して、”商品IDが80より大きいレコードのみ”を対象に、「発注点」フィールドの値を1.5倍する更新クエリを実行しています。そしてその直後に更新処理されたレコード数をメッセージボックスに表示しています。 Dim dbs As Database Dim strSQL As String Set dbs = CurrentDb strSQL = "UPDATE 商品 SET 発注点 = 発注点 * 1.5 " & _ "WHERE 商品ID > 80" dbs.Execute strSQL MsgBox dbs.RecordsAffected & " 件のレコードを更新しました!", _ vbOKOnly + vbInformation 実行結果: なお、RecordsAffectedプロパティはアクションクエリ”実行後”の処理レコード数を保持していますので、実行前の事前確認として処理対象レコード数を取得することはできません。そのようなときには、DCount関数を使うなどして、別途対象レコード数を調べる必要があります。 If MsgBox(DCount("商品ID", "商品", "商品ID> 80") & _ " 件のレコードを更新します!", _ vbOKCancel + vbQuestion) = vbOK Then 〜〜〜 更新処理を実行 〜〜〜 End If |
|||
|
Copyright © T'sWare All rights reserved |