#398 2つのフォームをレコード移動でシンクロさせる方法 フォーム、VBA

Accessウィンドウ上に開いている2つのフォームの表示内容(表示するレコード)を、フォームのレコード移動によってシンクロさせる方法です。ある一方のフォームのレコードが移動したとき(そのフォームが開いたときも含まれます)、それに合わせて、もう一方のフォームも同じキーを持ったレコードを検索してレコード移動させます。この方法では、シンクロされる側のフォームに含まれるレコードがフィルタによって抽出されるわけではないので、シンクロ後も自由に他のレコードに移動できるのが特徴です。

次の例では、下記のコードをメイン側フォームのイベントプロシージャとして記述することによって、「frm受注データ詳細」というフォームをシンクロさせます。ここでは、「受注コード」フィールドが2つのフォームを連動させるためのキーとなっています。

Private Sub Form_Current()
'フォームのレコード移動時

  Dim strCreteria As String

  'カレントレコードと同じ「受注コード」を検索する文字列を組み立て
  strCreteria = "受注コード = " & Me!受注コード

  'frm受注データ詳細フォームのレコードを検索して移動
  Forms!frm受注データ詳細.Form.Recordset.FindFirst strCreteria

End Sub


実行例:
■受注コードが「1005」のレコードへ移動したとき
シンクロされた状態

■受注コードが「2065」のレコードへ移動したとき
シンクロされた状態


※このプログラムでは、「frm受注データ詳細」フォームが実際に開いているかどうかまで確認していません。もし開いていない場合にはエラーとなりますので、その場合は別途対処するなど、注意してください。
| Index | Prev | Next |



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