「これはヤバかったな」という遅刻エピソード

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

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/05/23 20:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A