#397 | 2つのフォームをフィルタでシンクロさせる方法 | フォーム、VBA | |
Accessウィンドウ上に開いている2つのフォームの表示内容(表示するレコード)を、フォームのフィルタ機能によってシンクロさせる方法です。ある一方のフォームのレコードが移動したとき(そのフォームが開いたときも含まれます)、それに合わせて、もう一方のフォームにフィルタをかけることによって、同じキーを持ったレコードだけが表示されるようにします。そのキーが主キーであれば、まったく同じレコードだけが抽出表示されることになります。 次の例では、下記のコードをメイン側フォームのイベントプロシージャとして記述することによって、「frm受注明細2」(受注明細フォーム)というフォームをシンクロさせます。ここでは、「受注コード」フィールドが2つのフォームを連動させるためのキーとなっています。 Private Sub Form_Current() 'フォームのレコード移動時 Dim strFilter As String 'カレントレコードと同じ「受注コード」だけを抽出する 'フィルタの文字列を組み立て strFilter = "受注コード = " & Me!受注コード 'frm受注明細2フォームにフィルタを掛ける With Forms!frm受注明細2.Form .Filter = strFilter .FilterOn = True End With End Sub 実行例: ■受注コードが「1003」のレコードへ移動したとき ■受注コードが「1006」のレコードへ移動したとき ※このプログラムでは、「frm受注明細2」フォームが実際に開いているかどうかまで確認していません。もし開いていない場合にはエラーとなりますので、その場合は別途対処するなど、注意してください。 |
|||
|
Copyright © T'sWare All rights reserved |