この回答のコメントで、Remou は次のように書いています。
CurrentDB.Execute "insert sql here"
よりも良い
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
Access が生成する組み込みの警告のためです。私は違いを理解しようとしています。
どちらもエラーをマスクする場合、最初のエラーが 2 番目のエラーよりも望ましいのはなぜですか? ここにベストプラクティスはありますか?
この回答のコメントで、Remou は次のように書いています。
CurrentDB.Execute "insert sql here"
よりも良い
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
Access が生成する組み込みの警告のためです。私は違いを理解しようとしています。
どちらもエラーをマスクする場合、最初のエラーが 2 番目のエラーよりも望ましいのはなぜですか? ここにベストプラクティスはありますか?
どちらもエラーをマスクしません。DoCmd.SetWarnings はエラーをマスクし、使用している単一のアプリケーションに限定されず、システム全体に適用されます。DoCmd.SetWarnings False
対応 DoCmd.SetWarnings True
するものがない場合、アクション クエリは、PC 上の Access アプリケーションでプロンプトなしで実行されることを意味します。
実行は、クエリの実行に失敗したなどの必要な警告をスローしますが、「このクエリを実行してもよろしいですか」などの不要な警告は表示しません。
このスレッドで、Access MVP の Allen Browne は、Set Warnings を使用していないと述べています。
余談ですが、CurrentDB のインスタンスを使用することをお勧めします。これにより、とりわけレコード数を返すことができるようになります。
Set db = CurrentDB
db.Execute sSQL, dbFailOnError