2 つのサブフォーム (別々のタブ ページ) を持つフォームがあります。Access 2003 の MDB プロジェクトです。
最初に開いたときに、アクティブなサブフォームの Form_Current が 1 回発生します。
しかし、別のレコードに (つまり、メイン フォームから) 移動すると、アクティブなサブフォームで Form_Current が 4 回発生します。その後のレコードの移動により、Form_Current が 2 回発生します。サブフォームには移動および/または非表示になるフィールドがたくさんあるため、これは面倒です。そのため、遅いことは言うまでもなく、すべての Form_Current に対してジャンプします。
DoCmd.OpenForm を介してフィルターを使用してフォームを開いています (実際には、OpenArgs を介してフィルターを送信します)。FilterOn は、メイン フォームの Form_Open で一度だけ設定され、サブフォームでは決して設定されません。Form_Current は、コード内の他の場所では明示的に呼び出されません。
Form_Current が最初に移動するときにコール スタックを見ると、次のようになります。
my_subform.Form_Current
[<Debug Window>]
my_subform.Form_Current
そのため、Form_Current の何かが別の Form_Current イベントをトリガーしているようです。ただし、最初のレコード移動のみ。
Form_Current のコードはやや複雑で、カスタム クラスとイベント コールバックが含まれていますが、通常はテーブル データには触れていません。Form_Current をトリガーしていると思われる唯一のことは、フォーム コントロールの OldValue をチェックすることです。これが原因でしょうか?
それとも他に何か思い浮かびますか?
ありがとう。
エリック