VBA クエリを実行する DoCmd.OpenQuery [VBA]
VBAからクエリを実行する方法は、いくつかありますが、ここではDoCmd.OpenQueryを説明します。
ナビゲーションウィンドウ(2003以前はデータベースウィンドウ)から、クエリをダブルクリックしたときと同じ動作をさせる場合は、DoCmd.OpenQueryを使用します。
・構文
DoCmd.OpenQuery QueryName , View , DataMode
・引数
QueryName ・ 開く(実行する)クエリの名前を文字列で指定します。必須。
View ・ クエリをどのビューで開くか、下記のAcViewクラス定数で指定します。省略可。
名前 | 値 | 説明 |
---|---|---|
acViewDesign | 1 | デザイン ビュー |
acViewLayout | 6 | レイアウト ビュー |
acViewNormal | 0 | (既定値) 標準表示 |
acViewPivotChart | 4 | ピボットグラフ ビュー |
acViewPivotTable | 3 | ピボットテーブル ビュー |
acViewPreview | 2 | 印刷プレビュー |
acViewReport | 5 | レポート ビュー |
普通にクエリを開く場合は、acViewNormalです。
DataMode ・ クエリを開いて表示されたデータシートに対する入力モードを、下記のAcOpenDataModeクラス定数で指定します。省略可。
名前 | 値 | 説明 |
acAdd | 0 | 新規レコードの追加のみ。 データシートにクエリの結果が表示されず、新規追加の行のみ表示されます。 クエリの結果を参照したり、編集したりはできません。 |
acEdit | 1 | クエリの結果の参照、および編集(追加)ができます。(既定値) 普通にクエリを開いたときの状態です。 |
acReadOnly | 2 | クエリの結果の参照のみ可能です。 編集や追加はできません。 |
選択クエリ(SELECT)を開く場合は、
DoCmd.OpenQuery "クエリSELECT", acViewNormal, acEdit
と、記述します。「クエリSELECT」は、開くクエリの名前です。
実行すると、上図のように、クエリの結果がデータシートビューで表示されます。
更新クエリ(UPDATE)を開く場合ですが、
DoCmd.OpenQuery "クエリUPDATE", acViewNormal
と、記述して実行します。
アクションクエリをダブルクリックして実行した場合と同様に、
「更新クエリを実行すると、テーブルのデータが更新されます。」と言う確認メッセージが表示されます。
その後、さらに更新件数と、更新実行の確認メッセージが表示されます。
これを表示させたくない場合は、
DoCmd.SetWarnings False
を使用します。確認メッセージ無しで、最後まで実行されます。
更新クエリなどのアクションクエリの場合は、引数にどれを指定しても、データシートビューのウィンドウは表示されません。クエリが実行されるのみです。
DoCmd.OpenQuery利用する場合、あらかじめクエリを作成しておく必要があるので、VBAでSQLを組立てて実行する用途には向いていません。
また、アクションクエリを実行する場合は、トランザクション処理が行えません。
簡易的な方法として利用する場合は良いのですが、きちんとした更新処理を記述するのには向いていないと思います。
上記理由から、更新系の処理を行う場合は、他の方法をお勧めします。
選択クエリの内容を画面に表示させたい場合のみ、DoCmd.OpenQueryを利用するようにした方が良いと思います。
コメント 0