#598 | データの競合メッセージを無視するには? | フォーム、VBA | |
テーブルやクエリと連結しているデータをフォーム上に表示している際、カレントレコードが保存されていない状態、すなわちレコード編集中の状態で、裏でVBAのプログラムで同じデータを編集したり、あるいはネットワーク環境で何からのデータ編集が行われたりした場合、フォーム上のレコードを保存しようとすると次のようなデータ競合の警告メッセージが表示される場合があります。 このメッセージ表示を抑止して、データ競合エラーを無視させることができます。 それには、フォームの「Error/エラー時」イベントプロシージャに次のようなコードを記述します。 Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 7787 Then Response = acDataErrContinue End If End Sub Form_Errorイベントは、フォーム上で何らかのエラーが発生したときに発生します。そしてこのイベントプロシージャの引数「DataErr」には発生したエラーの番号が入っています。データ競合エラーのエラー番号は「7787」ですので、その場合には同じくイベントプロシージャの引数「Response」に定数”acDataErrContinue”を代入します。それによってエラーが起きた場合でもエラーメッセージが表示されないようになります。 一方、そのときのレコードの扱いはデータの競合メッセージダイアログで[他のユーザーによる変更を反映]を選択したのと同じになります。すなわち、フォーム上での変更も無視され保存されません。もし、[レコードの保存]を選択したときのようにフォームでの編集内容の方を上書き保存させたい場合には、イベントプロシージャを次のようにして、レコードセットを強制的に更新処理します。 Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 7787 Then Me.RecordsetClone.Update Response = acDataErrContinue End If End Sub |
|||
|
Copyright © T'sWare All rights reserved |