• ベストアンサー

「RunSQL」と「Execute」の違い

アクセスvbaについて 更新クエリを実行するとき DoCmd.RunSQL strSQL cn.Execute strSQL の違いは、 アクションクエリの確認のメッセージボックスを表示するかしないかの違いだけですか? (Executeは確認画面が表示されない)

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

私自身は、「マクロをVBAに変換」でVBAに移ってきたこともあって、 DoCmd.RunSQLばかり使っていますが・・・(汗) こちらのサイトが簡潔でわかりやすいかと思いますが、 http://www.mahoroba.ne.jp/~mw_ken/transrunsql.html Executeを使用した場合はRollbackを使用することで元に戻せる 一方で、RunSQLの場合は、「DoCmd.SetWarnings False」を 予め指定した場合、戻すことができなくなります。 (「True」にした場合も、『更新対象レコード数が表示されたときの  メッセージで「いいえ」を選択した場合だけ』と非常に限定的) ※「Rollback」については、VBEのヘルプで検索してみて下さい。 その意味では、  実行中に、(想定済みの)エラーが発生したらRollbackを行う   →Executeが必須  SQL実行後のコードでエラーしても元に戻す必要がない  (または(私のように)そこまでの制御はできないので諦める(汗))   →ExecuteでもRunSQLでも可 といったことになるかと思います。 (Executeの方ではメッセージボックスが表示されないのは、Rollbackという  取り消し手段を持っているから、ということかと) なお、「同期・非同期」の話が過去の質問で出ていますが、 そこでのNo.2の実験では、差が見られなかったとのことです。 (この辺り、不勉強なためわかりませんが・・・(汗)) http://oshiete1.goo.ne.jp/qa2680886.html

noname#150427
質問者

お礼

ありがとうございます。参考になりました。

関連するQ&A