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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Excel(エクセル) beforecloseの中からの抜け出し方 1 2023/08/10 18:01
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Accessでレコードの保存をせずにフォームを閉じたい
Access(アクセス)
-
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
accessの自動更新処理をできないようにするにはどうすれば良いですか?
その他(データベース)
-
5
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
Excel(エクセル)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
8
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
9
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
10
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
11
accessの処理が遅い
その他(データベース)
-
12
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
13
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
14
フォームから入力してテーブルにデータを落とすタイミング
その他(データベース)
-
15
accessのテーブルを閉じたときにクエリを自動で実行したい。
Access(アクセス)
-
16
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
17
ACCESSでコントロールソースの変更
Access(アクセス)
-
18
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
19
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
20
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル書込みで一行もしくは...
-
Access を×ボタンで閉じ...
-
データセットのレコード更新が...
-
COBOLでのランダムアクセス
-
JSPのNULLレコード表示について...
-
レコードセット(ADO.Recordset)...
-
VB.netの戻り値が返ってこない
-
カレントレコードが無い事を判...
-
DataGridViewにてセル以外をク...
-
ADODBのRecordset.Deleteのエラ...
-
Access のフォームで新しい行...
-
固有レコード識別子の選択とは
-
ヘッダレコードとトレーラレコ...
-
[VB6]プログレスバーコントロー...
-
Line Inputで文字化け(助けて...
-
DAO エクセルvbaからアクセ...
-
BASP21 で CGIとの通信
-
Accessで別テーブルの値をフォ...
-
select句副問い合わせ 値の個...
-
GROUP BYを行った後に結合した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
アクセスでレポートの1印刷内...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
レコードセット(ADO.Recordset)...
-
ワードの差込印刷で教えて下さ...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
DataGridViewの、選択されてい...
-
JSPのNULLレコード表示について...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
Access を×ボタンで閉じ...
-
サブレンジ分割されたNDB(富士...
-
ヘッダレコードとトレーラレコ...
-
データセットのレコード更新が...
-
DataGridViewにてセル以外をク...
-
Line Inputで文字化け(助けて...
おすすめ情報