
『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も見ています
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Accessで、フォームに情報を入力途中で、やめる(レコードに保存しない)ということは出来ますか?
Access(アクセス)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
6
アクセスVBAのMe!と[ ]
Access(アクセス)
-
7
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
8
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
9
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
10
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
11
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
12
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
13
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
14
アクセスでレコードの内容が変更されたかどうかを調べるには
Access(アクセス)
-
15
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
16
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
17
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
18
新規レコード行を非表示にしたい
Access(アクセス)
-
19
角丸四角形を描きたい
Excel(エクセル)
-
20
アクセスのテキストボックスの初期値を空白に
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2003 タブコントロール...
-
Access2003 入力フォームの表...
-
アクセス2003で入力フォー...
-
Access2002でクエリで抽出され...
-
フィルタ後のフォームの件数の...
-
レコード削除時に(サブ)フォー...
-
ACCESSでフォームを使って、テ...
-
アクセスでフォームビューがみ...
-
アクセスでフォームの作り方、...
-
ACCESSフォームのリストボック...
-
Access フォームで入力した番...
-
レコードを保存するコード ア...
-
Access フォーム入力で、一度に...
-
Accessで上の行を自動でコピー...
-
アクセス フォームでの行追加
-
ACCESSのクエリで抽出したデー...
-
アクセスのフォームが見れない...
-
Access2003で現在時刻の自動取...
-
ユニオンクエリについて質問です
-
ACCESS / 抽出条件によってレポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
アクセスのフォームで立ち上げ...
-
ACCESSフォームのリストボック...
-
アクセスの自動保存解除はでき...
-
アクセス:フォーム入力で、最...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
Accessでのデータ消滅に...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
アクセスでの警告について教え...
おすすめ情報