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でトランザクション処理を行う方法はわかりません…。(できないっぽい)