VBA クエリを実行する DoCmd.RunSQL [VBA]
VBAからクエリを実行する方法のひとつとして、DoCmd.RunSQLがあります。
他に、クエリを実行する方法として、DoCmd.OpenQueryがありますが、下記のような違いがあります。
・DoCmd.OpenQueryは、あらかじめ作成されたクエリを指定して実行します。
・DoCmd.RunSQLは、あらかじめ作成されたクエリを指定して実行することはできません。
・DoCmd.RunSQLは、パラメタに指定されたSQL文を実行します。
・DoCmd.OpenQueryは、SQL文を直接指定することはできません。実行するSQL文をクエリとして登録しておく必要があります。
・DoCmd.OpenQueryは、選択クエリ(SELECT)、アクションクエリ(UPDATEなど)を実行できます。
・DoCmd.RunSQLは、アクションクエリ(UPDATEなど)のみ実行できます。
・DoCmd.OpenQueryで選択クエリ(SELECT)を指定した場合、結果がデータシートで表示されます。
・DoCmd.RunSQLは、選択クエリ(SELECT)を実行できません。
上記のことから、DoCmd.RunSQLの使いどころは、VBAでアクションクエリのSQLを作成し、それを実行する場合になるかと思います。
・構文
DoCmd.RunSQL SQLStatement , UseTransaction
・引数
SQLStatement ・ SQL文を文字列で指定します。
実行可能なSQLは、INSERT INTO、DELETE、SELECT...INTO、UPDATE、CREATE TABLE、ALTER TABLE、DROP
TABLE、CREATE INDEX、DROP INDEXです。
UseTransaction ・ トランザクションに含める場合、Trueを指定します。デフォルトFalse
リファレンスにこう書いてあるので、トランザクション処理ができそうな感じがするのですが、DoCmdでトランザクション処理を行う方法はわかりません…。(できないっぽい)
・例
UPDATEのSQL文を実行する例です。
DoCmd.RunSQL "UPDATE TMCHIHO SET BIKO = 'TEST' "
パラメタにSQL文を指定して実行します。
このまま実行すると、
普通にクエリを実行したときと同様に、確認メッセージが表示されます。
「はい」をクリックすると、実行され、テーブルの内容が更新されます。
「いいえ」をクリックした場合、
エラーが表示され、実行が中断されますので、エラー処理を入れておく必要があります。
確認メッセージを表示させたくない場合は、事前に、
DoCmd.SetWarnings False
を実行しておくと、表示されなくなります。
元に戻すには、
DoCmd.SetWarnings True
です。
クエリを実行する方法として、DoCmd.RunSQLとDoCmd.OpenQueryを取り上げましたが、これらはあくまで簡易的な方法だと私は思っています。
処理として実装する場合は、ADOを使った方法をおすすめします。
コメント 0