- 締切済み
access サブフォーム間の連動について
Access2013について メイン親単票フォーム上に連動する二つのサブフォームを配置させました。 内一つは帳票、もう一つは単票にし、帳票からレコードを選択するとデータ詳細が単票側が連動するまで至りましたが、ここでサブフォーム帳票を並べ替えや抽出を実行すると、サブフォーム間の連動が出来なくなり、解決に困っております。 解決方法をご存知の方、お力添え願います。 親フォームに VBA Private Sub Form_Open(Cancel As Integer) Set Me.SubForm2.Form.Recordset = Me.SubForm1.Form.Recordset End Sub 抽出方法としては帳票サブフォーム上からとメインフォーム上からの実行までを試しておりますが、いずれも抽出後にサブフォーム間の連動が出来なくなってしまう状況です。 お力添え、宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hatena1989
- ベストアンサー率87% (378/433)
フォームで並べ替えやフィルタを設定すると、レコードセットが破棄されて再生成されますので、そのタイミングで、もう一度Recordsetに代入して同期させる必要があります。 ユーザーが右クリックなどでフィルタを掛けた時に発生するイベントとして「フィルタ実行時」イベントがありますが、これはフィルタが実行される前に発生するので、この時に代入しても同期しません。 「フィルタ実行後」というイベントがあればいいのですが、残念ながらありません。 そこで、タイマー実行時で同期させるコードを設定して、「フィルタ実行時」でタイマーを開始させるようにします。 SubForm1のモジュール 'タイマ時 イベント Private Sub Form_Timer() Me.TimerInterval = 0 'タイマー停止 Set Me.Parent.SubForm2.Form.Recordset = Me.Recordset End Sub 'フィルタ実行時 Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) Me.TimerInterval = 10 '10ミリ秒後にタイマー時の処理を実行 End Sub
お礼
大分時間が経過してしまいましたが、ご回答頂きありがとうございました。 何度も試しましたが、未だご回答の内容の動作が取れずの状態です。 現在はメインフォームにコントロールを置くことで何とか動いてくれる方法を見つけ、何とか対応しておりますが、システムの変更時に動かなくなるのではと不安ありです。 また質問をさせて頂く事もあると思っております。その時は宜しくお願いいたします。 ありがとうございました。