私は2つのフォームを使用しています。このコードの元のフォームは、予約された予定の週次サマリを示しています。各チームの毎日の予定数と毎日および毎週の合計を表示するテキストボックスが含まれています。私はすべてのテキストボックスのダブルクリックイベントを関数に置き換えました。テキストボックスをダブルクリックすると、別のフォームがそのテキストボックスに数えられるレコードを表示するために使用されます。ユーザーがすでに詳細フォームを開いていて、フォームでフィルターを選択していて、まだフィルターを適用していない場合は、すべて機能します。フォームビューがフィルタービーフォームであるかどうかをチェックする方法
詳細フォームが開いているかどうかを確認します。そうでない場合は、カウントされた予定のレコードを表示するSQLスティンで開きます。詳細フォームがすでに開いている場合は、フィルタが適用されているかどうかを確認し、フィルタを削除してフィルタを適用し、カウントされた予定のレコードを表示します。
If CurrentProject.AllForms("MyForm").IsLoaded = False Then
DoCmd.OpenForm "MyForm", , mysql
Else
If Forms("MyForm").FilterOn = True Then Forms("MyForm").FilterOn = False
Forms("MyForm").Filter = myfil
Forms("MyForm").FilterOn = True
End If
詳細フォームがフォームビュー/状態でフィルタに含まれているかどうかを確認するにはどうすればよいですか?そうであれば、それを閉じます。だから私は、カウントされた予定のレコードを表示するフィルタを適用することができます。
これらの場合は既に開いているフォームを閉じてから、フィルタでそのフォームを再度開くだけです。 - フリッカーを避けるため、これを実行中に 'Application.Echo False'を実行することができます。 –
Andre
私はこのアプローチを検討していますが、ユーザーがフォームのサイズを変更して好みに合わせるため、フォームの位置とサイズを記録して、同じ場所とサイズで再度開く必要があります。私はまた、エラーをキャッチしてクローズをトリガーして再オープンすることも考えました。私はチェックできるフォームのプロパティがあることを望んでいたが、私はそれを見つける運がなかった。 – tonyuk1977
これは私にはより多くの情報を提供しますが、問題の解決策は見つけられません。質問をより具体的にする方法はhttps://msdn.microsoft.com/en-us/library/office/ff191892.aspxです。 acFilterByForm、acFilterAdvancedなどのこれらのファイラー補助機能をテストするにはどうすればよいですか? – tonyuk1977