『F_入力用(単票フォーム)』で新規入力が行われた場合、明示的に保存操作をさせたく
ダーティー時を使って保存ボタンを作成しました。
ちなみに、なんらかの入力が行われた時は非可視のテキストボックスに「1」が入るようにし
そのテキストボックスに「1」が入っている時はレコードの移動は出来ず、
保存ボタンを押すことによって「1」が消えるという感じに作ってあります。
設計中にその『F_入力用』をダブルクリックで開き試してみたところきちんと稼動してましたが
実際の操作と同様に他のフォームから遷移してくるとなんらかの入力を行っても「1」が
入ってくれません。
いろいろ調べてみると他フォームから遷移されてくるときは、他フォームで入力された情報の一部が
『F_入力用』に表示のみされるようになっており、それが原因でダーティー時が稼動してくれない
ようでした。
(他フォームで入力された情報が表示される『F_入力用』上のテキストボックスを削除してみると
他フォームから遷移されてきてもダーティー時はちゃんと稼動してくれました)
他フォームのリンク元テーブルと『F_入力用』のリンク元テーブルは別のものです。
いろいろ調べてみましたが解決方法がまったくわかりません。
ご存知方がいらっしゃいましたらよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
「ダーティー時(OnDirty)」イベントは、マクロやVBAによる値の代入時には起動
しないので、ご質問の事例には使えないと思います。
現在は
『ダーティ時イベントでテキストボックスに「1」を代入し、レコード移動ボタンを
押したり閉じるボタンを押した際などにそれが「1」なら中止』
としているとのことですが、この「テキストボックスへの記録・参照」の代わりに
『フォームのダーティ(Dirty)プロパティを参照』
とすれば、手入力かマクロ・VBAかによらず、保存済みかどうかを判定できます。
(Dirtyプロパティの値がTrueなら更新中(レコードセレクタが鉛筆マーク相当)、
Falseなら未更新・保存済み(レコードセレクタが横向き▼マーク相当))
※要は、picopico_7さんがテキストボックスに「1」を記録させたのと同様のことを、
Accessが自動でDirtyという枠を使って行ってくれている(しかも手入力か
マクロ・VBAでの代入かに関係なく)、ということです。
VBAで、同フォームから参照する場合の式:
Me.Dirty
マクロの場合、又は別フォームなどから参照する場合の式:
Forms!(フォーム名).Dirty
例えば、VBAで、「新規レコード」ボタンを押したときに上記の確認をする場合は
以下のようなコードになります:
Private Sub 新規レコード_Click()
On Error Goto エラー処理
If Me.Dirty Then 'レコード保存していない場合
MsgBox "先に保存ボタンを押してください", , "確認"
Else 'レコード保存済みの場合
DoCmd.GotoRecord acForm, Me.Name, acNewRec
End If
終了処理:
Exit Sub
エラー処理:
MsgBox Err & ":" & Error$, , Me.Name & " BeforeUpdate"
Resume 終了処理
End Sub
お礼が遅れまして申し訳ありません。
大変勉強になりました。
頂いたアドバイスを使わせていただきます。
分かりづらい質問だったと思うのですが本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Access サブフォームでの選択行の取得
その他(データベース)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
-
4
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
ACCESSでサブフォームの編集中レコードの処理
その他(Microsoft Office)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
-
8
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
9
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
10
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
11
アクセスでレコードの内容が変更されたかどうかを調べるには
Access(アクセス)
-
12
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
13
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
14
Access2010、値を入力したら自動保存の方法
Access(アクセス)
-
15
Access2010 Enterで次テキストへ移動
その他(Microsoft Office)
-
16
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
17
VBA テキストボックスを選択状態にしたい
その他(プログラミング・Web制作)
-
18
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
19
Accessで、フォームに情報を入力途中で、やめる(レコードに保存しない)ということは出来ますか?
Access(アクセス)
-
20
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
ACCESSフォームのリストボック...
-
ACCESSでフォームを使って、テ...
-
アクセスの自動保存解除はでき...
-
Access:フォームプロパティ「...
-
Access 「このレコードを保存す...
-
アクセス帳票フォームのループ...
-
フィルタ後のフォームの件数の...
-
accessで表示しているレコード...
-
新規レコード行を非表示にしたい
-
YahooのIDがロックされてしまい...
-
ACCESS フォームをそのまま印刷...
-
Excelで入力したデータを自動的...
-
Word縦書きで左から右への行
-
Access レポート印刷するときに...
-
accessのフォームをレポートに...
-
Accessでフォームとレポートの...
-
iphoneのフルスクリーンの解除方法
-
EXCELのユーザーフォームで入力...
-
Accessで西暦の年だけ表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
ACCESS起動時に所定フォームを...
-
ACCESSでフォームを使って、テ...
-
アクセスの自動保存解除はでき...
-
accessのクエリで、該当するデ...
-
Accessでレコードの保存をせず...
-
AccessVBA RecordSourceのリセ...
-
Accessで上の行を自動でコピー...
-
Accessでフォーム上に 直前の...
-
Access2010、値を入力したら自...
-
Access サブフォームにフィルタ...
-
レコード削除時に(サブ)フォー...
-
Access 帳票フォームでカレント...
-
Accessで新しいレコードに規定...
-
Access レコード移動時イベント...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
おすすめ情報