webdevqa.jp.net

アクセスフォームを更新する方法

すべてのフォームがモーダルであるMSAccessアプリケーションを構築しています。ただし、フォームのデータが変更された後、このフォームの親フォームを新しいデータで更新したいと思います。それを行う方法はありますか?さらに詳しく説明するには:

フォームAとフォームBの2つのフォームがあるとします。どちらもモーダルフォームです。フォームAからフォームBを開始すると、フォームBにユーザーの注意が向けられます。しかし、フォームBの終了時に、フォームAを更新したいと思います。それを行う方法はありますか?

5
Varun Mahajan

いいえ、可能であれば、フォーム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
7
Fionnuala

再ペイントおよび/または再クエリできます。

フォームBのクローズイベントについて:

Forms!FormA.Requery

これはどういう意味ですか?

8
Fionnuala

「再クエリ」は確かに実行したいものですが、フォームAの「OnGotFocus」イベントで実行できます。 Form_Loadにコードがある場合は、おそらくそれをForm_Got_Focusに移動できます。

1
BIBD

データを変更した特定のコンボボックスを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フィールドのみを含む)で参照するとします。生徒を編集しているときに、学校のテーブルなどにない学校に生徒を関連付ける必要があります。

1
tony gil