ACCESS VBA サブフォーム Requeryが反映されない
解決済
回答 1
投稿
- 評価 0
- クリップ 0
- VIEW 7,881
ACCESS VBAにて以下のプログラムを作成しています。
親フォーム名:F02_2_注文画面
テキストボックスを配置しているサブフォーム名:F02_1_入力画面
ボタンを配置しているサブフォーム名:F02_3_ボタン画面
発生してる問題
F02_3_ボタン画面のボタンをクリックすると、モジュール内のPublic Subの処理を実行し、F02_1_入力画面のRequeryを実行したら、Requeryが反映してないです。
どうすればいいでしょうか?
問題のコード
F02_3_ボタン画面
Private Sub Btn_1 Click()
'非表示状態でフォームを開く
Docmd.OpenForm "F02_1_入力画面", acNormal, , , acFormEdit , acHidden
'サブフォーム処理に移動する
Call Data_Load
End Sub
モジュール
Public Sub Data_Load()
'テストデータをサブフォームのテキストボックスに出力する
Forms!F02_1_入力画面!txt_b2.value = "12345"
'Forms!親フォーム名!サブフォームエリア名.Form.Requery
Forms!F02_2_注文画面.F02_1_入力画面.Form.Requery
End Sub
-
クリップを取り消します
-
質問の評価を上げたことを取り消します
-
質問の評価を下げたことを取り消します
checkベストアンサー
0
まずは、
Forms!F02_1_入力画面!txt_b2.value = "12345"
だけでは、ソースのテーブルに反映されません。レコード保存操作をしないと。
with Forms!F02_1_入力画面
!txt_b2.value = "12345"
.Refresh '≒レコード保存
End Wuth
レコード保存してから、サブフォームを再クエリすれば反映されるでしょう。
だだし、再クエリすると先頭レコードへ移動しますので、更新したレコードが先頭レコードならという条件が付きますが。
ていうか、非表示でフォームを開かなくても、直接サブフォームのレコードを更新すればややこしいことを考えなくて済むような気がします。処理の全体像が不明なのでなんとも言えませんが。
Forms!F02_2_注文画面.F02_1_入力画面.Form!txt_b2.value = "12345"
投稿
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 87.79%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
Yoshikun_0945
2019/11/01 21:09
このプログラムのF02_1_入力画面につきましては、テーブルやクエリと連結しておりません。
F02_1_入力画面のテキストボックスに入力した内容は変数に代入させて処理後にテーブルに出力する予定です。
hatena19
2019/11/01 21:20
また、別に開いたフォームの値が、サブフォームに反映することもありえません。連結していないのですから。
回答の最後に書いた直接サブフォームのテキストボックスに代入する方法になります。