

Accessで最後の1レコード分のデータ入力を行ってから、レコードの更新をせず、レコードを移動せず、更新ボタンも押さず、いきなりフォームを閉じると、この1レコードが保存されてしまいます。
Me.Undo
DoCmd.GoToRecord , , acNewRec
を読込み解除時のイベントに入れても、しっかり保存されてしまいます。
閉じる時のイベントに入れるとエラーが出て保存されます。
×ボタンで閉じる時、入力途中のレコードを保存せずに閉じるにはどうしたら良いでしょう。
初心者ですので、何か簡単で良い方法がありましたら、ご教授願います。
No.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 では確認しましたが、それ以外のバージョンは未確認です。)
なるほど、Unload イベントが起きたときには既に更新済みなんですね。
登録された新規レコードを削除の方法で試したら出来たので、これで進めようと思います。
分かりやすい説明ありがとうございました。
(初心者なので具体例が助かりました)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessでレコードの保存をせずにフォームを閉じたい
Access(アクセス)
-
Accessで、フォームに情報を入力途中で、やめる(レコードに保存しない)ということは出来ますか?
Access(アクセス)
-
accessの自動更新処理をできないようにするにはどうすれば良いですか?
その他(データベース)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
6
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
9
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
10
ACCESSで条件によってフォーム上のフィールドの色を変更
Access(アクセス)
-
11
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
12
Access 「このレコードを保存することはできません」
その他(ソフトウェア)
-
13
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
14
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
15
アクセスのファイルが勝手に保存されるのはなぜ?
Access(アクセス)
-
16
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
17
access テキストボックスの値取得
Access(アクセス)
-
18
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
19
ACCESS クエリ→フォーム フィルターをかけたデータのみエクスポートしたい
Excel(エクセル)
-
20
どこにもフォーカスを当てたくない
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
アクセスでレポートの1印刷内...
-
レコードが存在しなかった場合
-
ACCESSのフォームで複数レコー...
-
サブレンジ分割されたNDB(富士...
-
DataGridViewの、選択されてい...
-
ワードの差込印刷で教えて下さ...
-
ADOでエクセルからアクセス...
-
Excel VBA読み込みで文字化けが
-
レコードセット(ADO.Recordset)...
-
固有レコード識別子の選択とは
-
エラー番号=5 制約を有効にで...
-
Access でレコードセレクタが押...
-
ファイル書込みで一行もしくは...
-
GROUP BYを行った後に結合した...
-
OracleのSQL*PLUSで、デー...
-
Oracleでの文字列連結サイズの上限
-
select insertで複数テーブルか...
-
Accessで別テーブルの値をフォ...
-
VLOOKUPについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewの、選択されてい...
-
ファイル書込みで一行もしくは...
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
JSPのNULLレコード表示について...
-
差し込み印刷のレコード数について
-
アクセスでレポートの1印刷内...
-
DataGridViewの内容をDBに反映...
-
サブフォームに新規レコードを...
-
カレントレコードが無い事を判...
-
ACCESSで大量の更新を行うと「...
-
ワードの差込印刷で教えて下さ...
-
[VBA] ADOの Clone と AddNew
-
サブレンジ分割されたNDB(富士...
-
固有レコード識別子の選択とは
-
データセットのレコード更新が...
-
レコードセット(ADO.Recordset)...
-
ヘッダレコードとトレーラレコ...
-
Access を×ボタンで閉じ...
-
ADODBのRecordset.Deleteのエラ...
おすすめ情報