実現したいこと
抽出条件だけが異なるクエリをひとつにまとめたい😘
前提
A、B、Cという3つのレポートがあり、B・CはAのレポートのコピー、レコードソースはAのレコードソースに抽出条件を咥えたものです😀
発生している問題・エラーメッセージ
別の抽出条件でレポートを出したいと考えるたびにレポートとクエリの数が増えるので管理がし辛いです😤😤😤
試したこと
AのレポートかAのレコードソースのクエリに工夫をして、「F1フォームからレポートAを開いたらBの抽出条件が適用される」「F2フォームからレポートAを開いたらCの抽出条件が適用される」みたいなミラクル挙動を実現したいです⭐⭐⭐
レポートを開く時に追加の抽出条件を加えればいいですよ
DoCmd.OpenReport メソッド (Access)
※「同時に複数のレポートを画面に表示したい」となるとこれだけではうまくいかないですが
Application.CurrentDb.QueryDefs("クエリ名").SQL = "SELECT FROM ***"
クエリの中身書き換えるとか
つまり操作するルート(フォーム別等)によって、クエリの中身を置き換えるということですよね。
クエリ部分の文字列を変数で設定すればいいのではないでしょうか。
はい 変数でも直接でも問題ないと思います。
これで試してみましたが、フォームのコンボボックスから担当者を1人選ぶとその担当者以外のレポートも入ってしまっています。
また、標準モジュールにAutoFontSize関数を記述しているのですが、他の担当者を選択してプレビューを表示しようとすると、実行時エラー2185が出ます。このサイトと同じ状況です。
コピペされてないようなので何とも言えないですが
として、コードを試してください
strWhereCondition
はTrue
となって、つまり全レコードを対象にするフィルタ(無意味)をかけてるんじゃないですかねなので、きちんとWHERE句の文字列になるように渡しましょう
あと、自身のフォームのコントロール(コンボボックス)を指定するときは
Me
キーワードを使用するといろいろと捗りますついでに、「担当者名」って文字列ですよね?
Private Sub btn_担当者別プレビュー表示_Click()
If Trim(Nz(Me!cmb_担当者名, "")) = "" Then '担当者を選択していない場合
Exit Sub
End If
DoCmd.Close acReport, "R_出力用レポート" '連続してプレビュー表示を押した時用
DoCmd.OpenReport "R_出力用レポート", acViewPreview,,"担当者='" & Me!cmb_担当者名 & "'"
DoCmd.RunCommand acCmdPreviewOnePage
End Sub
こっちはだいぶ問題が異なりそうなのでひとまず無回答で
WHERE句?を正しく指定出来たら、きちんと各担当者のレポートだけが表示されるようになり、何故か実行時エラーの問題も解決しました!!クエリもレポートも減ってスッキリしました
お礼が抜けておりました、本当にありがとうございました🥰