すべてのフォームがモーダルであるMSAccessアプリケーションを構築しています。ただし、フォームのデータが変更された後、このフォームの親フォームを新しいデータで更新したいと思います。それを行う方法はありますか?さらに詳しく説明するには:
フォームAとフォームBの2つのフォームがあるとします。どちらもモーダルフォームです。フォームAからフォームBを開始すると、フォームBにユーザーの注意が向けられます。しかし、フォームBの終了時に、フォームAを更新したいと思います。それを行う方法はありますか?
いいえ、可能であれば、フォームAのForm_Loadを実行したいようなものです。
--Varun Mahajan
これを行う通常の方法は、両方のフォームから呼び出すことができるプロシージャに関連するコードを配置することです。コードを標準モジュールに配置するのが最善ですが、フォームaにコードを配置することもできます。
フォームB:
Sub RunFormALoad()
Forms!FormA.ToDoOnLoad
End Sub
フォームA:
Public Sub Form_Load()
ToDoOnLoad
End Sub
Sub ToDoOnLoad()
txtText = "Hi"
End Sub
再ペイントおよび/または再クエリできます。
フォームBのクローズイベントについて:
Forms!FormA.Requery
これはどういう意味ですか?
「再クエリ」は確かに実行したいものですが、フォームAの「OnGotFocus」イベントで実行できます。 Form_Loadにコードがある場合は、おそらくそれをForm_Got_Focusに移動できます。
データを変更した特定のコンボボックスをREQUERY
で使用し、Cmd.Close
ステートメントの後に使用することをお勧めします。そうすれば、データを入力していた場合、そのデータも再照会されます。
DoCmd.Close
Forms![Form_Name]![Combo_Box_Name].Requery
最近変更された値を指定することもできます
Dim id As Integer
id = Me.[Index_Field]
DoCmd.Close
Forms![Form_Name]![Combo_Box_Name].Requery
Forms![Form_Name]![Combo_Box_Name] = id
この例では、セカンダリテーブルにデータを入力するためのフォームを開いたと想定しています。
school_IndexとSchool_NameをSchoolテーブルに保存し、Studentテーブル(School_Indexフィールドのみを含む)で参照するとします。生徒を編集しているときに、学校のテーブルなどにない学校に生徒を関連付ける必要があります。