#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」フォームが実際に開いているかどうかまで確認していません。もし開いていない場合にはエラーとなりますので、その場合は別途対処するなど、注意してください。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved