Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

Access2000のVBAのイベントプロシージャについて

以前から疑問に思っていましたが、イベントプロシージャの「更新前」と「更新後」と 「変更時」の意味、というかタイミングがよくわかりません。例えばコンボボックスの 「更新前」とは、具体的にはどういうときなのでしょうか。コンボの値を更新する前と いうのなら、何もいじってない状態という意味に取れるのですが、何もいじってないなら イベントは発生していないと思うのですが。また、コンボボックスの「更新後」は、 値が変わったときだと思うのですが(例えば「北海道」が選択されているコンボの値を 「東京都」に変えたときなど)、「更新後」と「変更時」はどう違うのですか? どうぞよろしくご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#7099
noname#7099
回答No.2

コンポボックスなら、更新後と変更時に違いがないかもしれませんが、 変更時は、一文字変更するごとに動作します。 自分で入力するなら、「北海道」をDeleteキーでいっぺんに消すと1回、一文字ずつ消すと3回、東京都でも、「とうきょうと」を1回で変換すると1回、「とうきょう」「と」と2回で変換すると2回動作します。都合2回から5回ほど動作する可能性があります。コンポボックスで選んでもらうつもりならここに指定してもあまり意味はないでしょう。  「AfterUpdate/更新後処理」は、変換が終わって、enterキーtabキーが押されてカーソルが外で出て行く直前に、「変更後の値」に対して処理が行われます。私は、「フィールドの更新後処理」に、入力した値のチェックをしたり、更新をきっかけに他の値を変更しています。  「BeforeUpdate/更新前処理」は、変換がおわって、enterキーtabキーが押されてカーソルが外で出て行く直前に、「変更前の値」に対して処理が行われます。私は「フォームの更新前処理」に、「更新日付フィールドに本日日付を代入する」命令を入れて、レコードがいつ更新されたかがわかるようにしています。  他のイベントもいろんな違いがあり、使い分けることができます。

noname#21585
質問者

お礼

分かりやすくご説明いただきありがとうございました。よく理解できました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.3

一般的に「更新後」は入力された値を受けて、別のコントロールに変更 を加える処理に使います。 たとえば、コンボボックスの値「北海道」が「東京都」に変更されたとき 住所をクリアする等が考えられます。 「更新前」は入力された値そのものが正しいかをチェックするのに便利です。 たとえば別のコントロールの値から「北海道」が選択されるのは明らかに おかしい場合、「更新前」のイベントでチェックし、Cancel=Trueを入れると 更新されなかったことに出来ます。 ご参考まで。

noname#21585
質問者

お礼

理解しやすくご説明くださいましてありがとうございました。

すると、全ての回答が全文表示されます。
noname#5584
noname#5584
回答No.1

イベントの意味はヘルプに記載されています。 わからないとは、それを読んだ上での疑問なのでしょうか? > コンボの値を更新する前と いうのなら、何もいじってない状態という意味に取れる ヘルプを読みましょう。 イベント (メッセージ) の発生タイミングについては、イベントプロシージャにデバッグ用のコード (Debug.Print, MsgBox 等) を埋め込めば確認できます。

noname#21585
質問者

お礼

ヘルプももう一度読んでみました。理解ができたような気がしました。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A