So-net無料ブログ作成

VBA クエリを実行する DoCmd.RunSQL [VBA]

 VBAからクエリを実行する方法のひとつとして、DoCmd.RunSQLがあります。
 他に、クエリを実行する方法として、DoCmd.OpenQueryがありますが、下記のような違いがあります。

DoCmd.OpenQueryは、あらかじめ作成されたクエリを指定して実行します。
DoCmd.RunSQLは、作成されたクエリを指定して実行することはできません。

DoCmd.RunSQLは、パラメタに指定されたSQL文を実行します。
DoCmd.OpenQueryは、実行する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.RunSQLDoCmd.OpenQueryを取り上げましたが、これらはあくまで簡易的な方法だと私は思っています。
 処理として実装する場合は、ADOを使った方法をおすすめします。



【2万円から3万円の、格安ホームページ作成サービス】

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

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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