• ベストアンサー
  • 暇なときにでも

「RunSQL」と「Execute」の違い

  • 質問No.4981408
  • 閲覧数4955
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0
アクセスvbaについて
更新クエリを実行するとき
DoCmd.RunSQL strSQL
cn.Execute strSQL
の違いは、
アクションクエリの確認のメッセージボックスを表示するかしないかの違いだけですか?
(Executeは確認画面が表示されない)

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 73% (1287/1744)

私自身は、「マクロを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
ありがとうございます。参考になりました。
投稿日時:2009/05/23 20:50
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ