アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessで最後の1レコード分のデータ入力を行ってから、レコードの更新をせず、レコードを移動せず、更新ボタンも押さず、いきなりフォームを閉じると、この1レコードが保存されてしまいます。

Me.Undo
DoCmd.GoToRecord , , acNewRec

を読込み解除時のイベントに入れても、しっかり保存されてしまいます。
閉じる時のイベントに入れるとエラーが出て保存されます。
×ボタンで閉じる時、入力途中のレコードを保存せずに閉じるにはどうしたら良いでしょう。
初心者ですので、何か簡単で良い方法がありましたら、ご教授願います。

A 回答 (1件)

Form_BeforeUpdate イベントに MsgBox "BeforeUpdate"


Form_Unload イベントに MsgBox "Unload"
と入れてやってみるとわかると思いますが、
BeforeUpdate → Unload
の順でイベントが発生します。つまり、Unload イベントが起きたときには既に更新済みです。
( ちなみに、Form_Close は Form_Unload の後です。)
BeforeUpdate で Cancel = True としてやれば更新しなくなりますが、これだと、フォームを閉じようとした時以外のときも更新しなくなってしまいます。また、BeforeUpdate の中では、フォームが閉じられようとしているのどうか判定できません。
というわけで、Form_Unload、または Form_Close の中で、登録された新規レコードを削除してやるくらいしかないように思います。
具体的には、
Private mblnNewRecord As Boolean

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
mblnNewRecord = True
Else
mblnNewRecord = False
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
If mblnNewRecord Then
DoCmd.RunCommand acCmdDeleteRecord
End If
End Sub
という感じです。( Access 2000 では確認しましたが、それ以外のバージョンは未確認です。)
    • good
    • 0
この回答へのお礼

なるほど、Unload イベントが起きたときには既に更新済みなんですね。
登録された新規レコードを削除の方法で試したら出来たので、これで進めようと思います。
分かりやすい説明ありがとうございました。
(初心者なので具体例が助かりました)

お礼日時:2007/06/21 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A