プロが教えるわが家の防犯対策術!

Access2013について

メイン親単票フォーム上に連動する二つのサブフォームを配置させました。
内一つは帳票、もう一つは単票にし、帳票からレコードを選択するとデータ詳細が単票側が連動するまで至りましたが、ここでサブフォーム帳票を並べ替えや抽出を実行すると、サブフォーム間の連動が出来なくなり、解決に困っております。
解決方法をご存知の方、お力添え願います。

親フォームに
VBA
Private Sub Form_Open(Cancel As Integer)
Set Me.SubForm2.Form.Recordset = Me.SubForm1.Form.Recordset
End Sub

抽出方法としては帳票サブフォーム上からとメインフォーム上からの実行までを試しておりますが、いずれも抽出後にサブフォーム間の連動が出来なくなってしまう状況です。
お力添え、宜しくお願いいたします。

A 回答 (1件)

フォームで並べ替えやフィルタを設定すると、レコードセットが破棄されて再生成されますので、そのタイミングで、もう一度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
    • good
    • 0
この回答へのお礼

大分時間が経過してしまいましたが、ご回答頂きありがとうございました。
何度も試しましたが、未だご回答の内容の動作が取れずの状態です。
現在はメインフォームにコントロールを置くことで何とか動いてくれる方法を見つけ、何とか対応しておりますが、システムの変更時に動かなくなるのではと不安ありです。
また質問をさせて頂く事もあると思っております。その時は宜しくお願いいたします。
ありがとうございました。

お礼日時:2014/07/27 14:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A