あるデータベースから別のデータベースにレコードを実行して挿入するスクリプトを継承しました。
数日前、あるシステムから別のシステムにレコードがプルされていないと人々が不満を言うまで、すべてが正常に機能しているように見えました。
Windows Server2003でスケジュールされたタスクで実行するように設定されたマクロを確認しました。マクロはログに記録された出力をSQLServerに送信するため、そこに移動して、1人の従業員が挿入されたことを示す適切なログステートメントを探しました。データベース。しかし、他のシステムに行くと、転勤して挿入されたと伝えられている従業員はそこにいませんでした。
さらに詳しく調べると、一方のデータベースから選択されていたフィールドだけが、もう一方のデータベースに追加された挿入ステートメントにプルされました。
これらの値を手動で挿入しようとすると、フィールドをNULLまたは長さゼロの文字列にすることが許可されていないというSQLエラーが発生しました。ただし、スクリプトでのエラーチェックにもかかわらず、
Function SomeFunc
On Error GoTo The_Err
DoCmd.SetWarnings False ' This statement seems a bit suspect to me...maybe fields being
' null or a zero length are just warnings? Seems wrong because
' I don't want a warning when my record will not be inserted,
' I want an error.
....
DoCmd.OpenQuery "qryAddNewEmp_S1toS2", acViewNormal, acAdd ' This is the statement that
' selects from the one db
' and inserts into the other db
...
The_Exit:
Exit Function
The_Err:
' MsgBox Error$ ' You can turn this on and off.
dmsg = "Error AUCP"
RunCheck dmsg, errArea, 0, 0
DoCmd.SetWarnings True
Resume The_Exit
End Function
警告がオフになってDoCmd.SetWarnings False
いるため、エラーがログに記録されませんか?また、代わりにコードで検証を行い、各値をチェックする必要がありますか?それは私には正しくないようです。データベースにはそれが組み込まれているので、それはデータベースの責任であるはずのことのようです。