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