2016-05-30 4 views
1

問題:私はクエリを使用してデータシートフォームを作成しました。私は同じクエリを使ってレポートを作成します。データシートのフォームをフィルタ処理してからレポートを開くと、フォームのフィルタはレポートに影響しません。データシート形式のフィルタリングレポート

達成するべきこと:私のレポートとフィルターされたフォームに同じデータが表示されます。

質問:データシートフォームフィルタをレポートに適用する方法はありますか?

重要:私のフォームでは、クエリをフィルタリングするためにバインドされていないフィールドは使用できません。それはフィルタリングの "Excelのような"アイデアでなければなりません。つまり、ユーザーは、データシートの各列で小さな三角形をクリックし、リストからデータを選択してレポートを開くことができるはずです。レポートはフォームのフィルタ設定を "覚え"なければなりません。

答えて

1

レポートはクエリーに基づいているため、データベースウィンドウ/ナビゲーションペインからレポートを開き、オープンフォームに表示されている内容に応じてソースデータを簡単に変更することはできません。

フォームをサブフォームとして新しい空白のフォームに配置すると、レポートをプレビューするためのボタンを追加することができます。

ボタンはレポートをプレビューし、Filterを含みます。このフィルタは、現在サブフォームで使用されているからコピーすることができます

Private Sub cmdPreview_Click() 
    'Debug.Print Me.Controls("frmStaffFilter").Form.Filter 
    DoCmd.OpenReport "rptStaffFilter", acViewReport, , Me.Controls("sbfStaffFilter").Form.Filter 
End Sub 

(これはどこの引数ではなく、この前の引数であるという名前のフィルタを使用しています。)


ベースこれで、私が最初に言及したことを達成することができました。レポートのOpenイベントを使用して、フォーム(およびそのサブフォーム)が現在開いているかどうかをまず確認します。上のコードを適用して、サブフォームのFilterを読み込んで適用します。

+0

OK、それは時間がかかりましたが、最終的に私は考えました。 sbfStaffFilter.Form.Filter Form.Filter によってフォームを Me.Controls( "sbfStaffFilter")、それが今で完璧に動作します:!。私はあなたのどこに引数を交換しました。あなたの助けに多くのおかげで、アンディG :) – YourNick