SSブログ

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を利用するようにした方が良いと思います。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。