質問: 「runsql」と「execute」の違い アクセスvbaについて 更新クエリを実行するとき docmd.runsql strsql cn.execute strsql の違いは、 アクションクエリの確認のメッセージボックスを表示するかしないかの違いだけですか? (executeは確認画面が表示されない)
回答: 私自身は、「マクロを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