質問
前置きイベントを迂回することは可能ですか?ただし、レコードを保存しようとしたときに実行されるPlayDateイベントにいくつかのコードがありますが、同じ形式で、ユーザーがそのサブフォーム内のレコードを選択する必要があるサブフォームがあります。これは現在のレコードの焦点を変えて、それは私の前に私の以前のものを引き起こします。
フォームのサブフォームでレコードをクリックすると、フォームのFlowedUpdateイベントを迂回する方法はありますか?
解決
""ユーザーがフォームのサブフォームでレコードをクリックしたときにフォームの前のイベントを迂回する方法はありますか? "
メインフォームに保存されていないレコードを持つサブフォームにフォーカスを切り替えると、アクセスは自動的に「ダーティ」メインフォームレコードを保存しようとします。
その動作はアクセスに組み込まれていて、それを防ぐことはできません。
私はあなたが異なるアプローチを使うべきだと思います。現在(コメントディスカッションに基づく)メインフォームレコードを保存するためのコマンドボタンがあります。ただし、特定のコントロールにNULLが含まれている場合は、フォームの flowedupdate イベントから保存を中止します。
私の見解から、それらのコントロールにNULLが含まれている場合は、コマンドボタンをクリックすることもできません。 (なぜボタンをクリックしてアクションを知らせるなぜこれを無効にするのですか?)したがって、すべてのコントロールにNULLの値が含まれていない場合にのみ[コマンド]ボタンのみを有効にしてください。
cmdsave と3テキストボックスという名前のコマンドボタンを考えてみましょう。 txtone 、 txttwo 、 txthree 。プロシージャ、 setButtonAvailability を作成し、3つのテキストボックスのすべてのテキストボックスの afterupdate イベントにその手順を呼び出します。
Private Sub SetButtonAvailability
If IsNull(Me.txtOne) Or IsNull(Me.txtTwo) Or IsNull(Me.txtThree) Then
Me.cmdSave.Enabled = False
Else
Me.cmdSave.Enabled = True
End If
End Sub
.
フォームの oncurrent イベントでは、現在のレコードの保存にまだ変更がないため、Me.cmdSave.Enabled = False
を実行します。