というプログラムを書きたいと思います。
イベントプロシージャーで以下のように書いたのですがうまくいきません。
---------------------------------------------
Private Sub 担当者_AfterUpdate()
Dim A As Integer
Dim s
Dim t
A = MsgBox("更新しますか?",1)
If A = 1 Then
Else
s=t
s= Me![担当者]
End If
End Sub
------------------------------------
Private Sub 担当者_BeforeUpdate(Cancel As Integer)
Dim t
t = Me![担当者]
End Sub
-------------------------------------
上段と下段がありますが、
下段は「レコード変更前」に「担当者」のレコード内容をtに保管し、
上段は入力確定後メッセージが出て「OK」ならそのまま
「いいえ」ならsに保管されているtを代入し、そのsを「担当者」とする。
という内容です。
しかし、これでは、メッセージは聞いてくるもののどちらで答えても
レコードは上書き後のままで他のフィールドにとびます。
どなたか教えていただけないでしょうか?
宜しくお願い致します。
YHN
カーソルを移動したくないならもんでどうでしょう?
Private Sub 担当者_BeforeUpdate(Cancel As Integer)
Dim A As Integer
A = MsgBox("更新しますか?", 1)
If A <> 1 Then
DoCmd.CancelEvent
SendKeys ("{ESC}")
End If
End Sub
ありがとうございます。うまくいきました。
ところで、「Cancel = True」の役割がわからないので、これだけ外してみました。
そして、メッセージに対し、「キャンセル」すると、「担当者」項目はアンドゥされ
ずに
次の項目に移動します。ヘルプでは「Cancel = True」をBeforeUpdate イベントの
キャンセルとかいてますが、意味が分かりません。
この場合どういう役割を果たしているのでしょうか?
If A <> 1 ThenのところでIf A = 1 Thenだとうまくいきました。
「OK」と答えた場合、カーソルは移動します。
DoCmd.CancelEventはアンドゥみたいなものですか?
SendKeys ("{ESC}")の役割は何でしょうか?