
Accessでデータベースのレコード追加を行うフォームを作成しています。
コマンドボタン(1)をクリック→新しいレコードの追加
コマンドボタン(2)をクリック→フォームを閉じる
としています。(ウィザードを使用して、埋め込みマクロ?を設定しています。)
コマンドボタン(1)でレコードが追加されるのは問題ないのですが、
コマンドボタン(2)をクリックした場合も、レコードが追加されていることに気がつきました。
一般的に入力する人は、
データを追加しようと思って入力していたけれど、
途中でやめてフォームを閉じることってありますよね?
そういう場合にレコードが追加されてしまったら問題だと思ったのです。
ですが、どうしたらレコードの追加をせずにフォームを閉じられるかがわかりません。
それって可能でしょうか?
Access初心者です。難しいVBAとかはまだよくわかりません。
何か方法、アドバイス等ありましたら
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
フォームを閉じたときに保存されるのは仕様です
それ以外にAccessを終了したとき、レコードを移動したときにも保存されます
これらを完全にカバーするには、非連結のフォームにし
ボタンクリックでデータをテーブルに書き込むようにするか
作業用のテーブルから作ったフォームで入力し
ボタンクリックで本テーブルに転記するようにします
どちらにしてVBAが必要ですね、しかもへんなレコードを書き込もうとすると
コードが止まってしまいますから
転記前にデータの整合性を完全にチェックする必要があります
という訳でかなりきちんとしたコードが書けるスキルが必要ですね
お礼がおそくなりました。
Accessがそういうものだということで、
入力する人に周知しておくのがいいような気がしてきました。
ありがとうございました。
No.1
- 回答日時:
完全な対策はVBAでないと不可能です。
全く、VBA を書かないとすれば、コマンドボタンを増やすという手があります。
もちろん、{ESC}を2度押すようにしてもいいです。
Private Sub コマンド_フォームを閉じる_Click()
On Error Resume Next
DoCmd.Close
End Sub
Private Sub コマンド_レコードを復元_Click()
On Error Resume Next
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
End Sub
Private Sub コマンド_レコードを保存_Click()
On Error Resume Next
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub
これらのコマンドボタンをウィザードで生成すればいいです。
ただ、上の例では冗長なコードを消しているだけです。
これを応用して、
Private Sub コマンド_最後に編集したレコードを保存しないでフォームを閉じる_Click()
On Error Resume Next
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.Close
End Sub
しかし、これもレコード移動されていたんじゃどうしようもないです。
<tbl1>
ID___fld1___fld2
1____aaa1___bbbb
2____aaa2___null
しかし、こういうnull値を持つレコードの発生を完全に阻止するには、チェックして削除するしかないです。
Private Sub Form_Close()
On Error Resume Next
DoCmd.RunSQL "DELETE FROM tab1 WHERE LEN(fld2 & '')=0"
End Sub
VBと言っても、SQLの DELETE文を書くだけです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- ドメイン・サーバー・クラウドサービス 独自ドメインでのNSレコード設定 1 2023/07/12 18:36
このQ&Aを見た人はこんなQ&Aも見ています
-
Access を×ボタンで閉じる時、レコード保存したくない。
Visual Basic(VBA)
-
Accessで、フォームに情報を入力途中で、やめる(レコードに保存しない)ということは出来ますか?
Access(アクセス)
-
accessの自動更新処理をできないようにするにはどうすれば良いですか?
その他(データベース)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
アクセスの自動保存解除はできるか?
Access(アクセス)
-
6
アクセスのファイルが勝手に保存されるのはなぜ?
Access(アクセス)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
-
8
入力途中の入力した値をすべて削除する方法
その他(データベース)
-
9
角丸四角形を描きたい
Excel(エクセル)
-
10
新規レコード行を非表示にしたい
Access(アクセス)
-
11
コンボボックスで選択したものをクリアーしたい(アクセス VBA)
Access(アクセス)
-
12
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
13
Access サブフォームでの選択行の取得
その他(データベース)
-
14
access テキストボックスの値取得
Access(アクセス)
-
15
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
16
エクセルをACCESSのレポートに変換する方法
その他(Microsoft Office)
-
17
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
18
Returnに対するGoSubがありません
Access(アクセス)
-
19
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
20
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
Accessでデータ入力時の最初の...
-
ACCESS2003 タブコントロール...
-
アクセス2003で入力フォー...
-
アクセス フォームでの行追加
-
レコードの移動
-
access vba 引数
-
Accessの再計算ボタンについて
-
アクセスでフォームビューがみ...
-
レコードをダブルクリックする...
-
Access2000で単票のフォームで...
-
ACCESS起動時に所定フォームを...
-
Access2000 フォームビューの表...
-
ACCESS「ンボ ボックスで選択し...
-
Access フォームで入力した番...
-
Access97 マウスホイールでレコ...
-
Accesのフォーム作成に関して
-
Accessのサブフォームで、次の...
-
データシートビューとフォーム入力
-
ACCESS2007 レコード位置の表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
アクセスのフォームで立ち上げ...
-
ACCESSフォームのリストボック...
-
アクセスの自動保存解除はでき...
-
アクセス:フォーム入力で、最...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
Accessでのデータ消滅に...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
アクセスでの警告について教え...
おすすめ情報