14

この回答のコメントで、Remou は次のように書いています。

CurrentDB.Execute "insert sql here"

よりも良い

DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"

Access が生成する組み込みの警告のためです。私は違いを理解しようとしています。

どちらもエラーをマスクする場合、最初のエラーが 2 番目のエラーよりも望ましいのはなぜですか? ここにベストプラクティスはありますか?

4

1 に答える 1

19

どちらもエラーをマスクしません。DoCmd.SetWarnings はエラーをマスクし、使用している単一のアプリケーションに限定されず、システム全体に適用されます。DoCmd.SetWarnings False対応 DoCmd.SetWarnings Trueするものがない場合、アクション クエリは、PC 上の Access アプリケーションでプロンプトなしで実行されることを意味します。

実行は、クエリの実行に失敗したなどの必要な警告をスローしますが、「このクエリを実行してもよろしいですか」などの不要な警告は表示しません。

このスレッドで、Access MVP の Allen Browne は、Set Warnings を使用していないと述べています。

余談ですが、CurrentDB のインスタンスを使用することをお勧めします。これにより、とりわけレコード数を返すことができるようになります。

Set db = CurrentDB
db.Execute sSQL, dbFailOnError
于 2012-06-26T18:41:44.077 に答える