2012-05-02 14 views
1

私の質問は、コントロールのソースプロパティとafterupdateイベントはどのようにして発生順に関係していますか?最初に発生するのはどちらですか? 私はmsgboxに、テキストボックスに入力したデータを保存したいかどうかを確認するようにしたいと思っています。テキストボックスには、制御フィールドのprpoertyがフィールドに設定されています。ユーザーがアクションをキャンセルすると、保存されました。 テキストボックスのOnChangeイベントにmsgboxを配置すると、データ入力を確認するには早すぎるのでしょうか? 注:コントロールソースは日付型のフィールドです。コントロールソースはいつデータをデータベースに保存しますか?

+0

または更新前イベントでは? – user1175126

答えて

1

ControlSourceは、実際にChange、BeforeUpdateまたはAfterUpdateイベントに直接関係していません。

使用する必要があるイベントはBeforeUpdateイベントです。

Private Sub txtFirstName_BeforeUpdate(Cancel as Integer) 
    If MsgBox("Are you sure you want to save this data?", vbYesNo, "Um...") = vbNo Then 
     Cancel = True 
    End If 
End Sub 

は、私はほとんどの状況では、それはそれは、よりユーザーフレンドリーになる傾向があるという理由だけで、コントロールのBeforeUpdateイベントでそれをやってするのではなく、物事を検証するためにフォームのBeforeUpdateイベントを使用することをお勧めします追加したいです。フォームのBeforeUpdateイベントは、上記のコードと同じように動作します。

また、検証ルーチンでMsgBoxを使用するのは、ほとんどの人がそれを行う方法ですが、実際には優れた設計方法とはみなされません。検証メッセージを出力するために使用できるテキストボックスやラベルを用意しておき、入力したデータが有効でないことをユーザーに知らせるためにサウンドを再生する方がよいでしょう。

+0

ユーザーがNOをクリックすると、recalcが書き込まれたコード行を指すランタイムエラーが発生します。 – user1175126

+0

ReCalcをAfterUpdateイベントで実行する必要があるかもしれません。 BeforeUpdateコードでNoをクリックすると、AfterUpdateは発生しません。 – HK1

+0

ReCalcは、すでに同じtexboxのafterupdateイベントに入っています。 – user1175126

関連する問題