私のそれほど謙虚な意見ではありませんが、MSAccessではパラメータが適切に処理されていません。
実行するたびに(実験的なクエリでない限り)クエリに値を入力しなければならないのは間違っていると思います。パラメータを渡すだけで、そのようなレポートを自動化する方がはるかに簡単です。
通常、クエリのwhere句にパラメータを含まないレポートを作成し、Remouの回答に追加される独自のwhere条件をここに渡します。
レポートを呼び出す前にレポートのクエリを変更することもできますが、それはかなりハッキーです。
- 編集 -
混乱が見られます。私はあなたがしていることを(フォームではなく)レポートとして解釈しました。
発生する可能性が高いのは、印刷ジョブをレンダリング/フォーマットしようとすると、フォームのレコードソースを複数回呼び出す必要があるということです。そしてそれがなぜそれがあなたにそのデータを求め続けるのか。
あなたの質問で私が理解していることから、あなたは次のようなクエリを持っています:
select foo
from bar
where
yaddah_date between [Start Date] and [End Date]
次に、そのクエリを、後でPDFとして印刷しようとしているフォームのレコードソースとして使用しました。まず、フォームに類似したレポートを作成する必要があります。次に、フィルターを使用して印刷するレポートを開きます。
DoCmd.OpenReport "myReport", , , , _
"yaddah_date between " & txtStartDate & _
" and " & txtEndDate
(最後の部分は基本的に、レポートがデータを生成しているクエリの結果に適用されるfilter / where句です)。
フォームを印刷する必要がある場合は、同様のことを行うことができます
DoCmd.OpenForm "foo", acNormal, , _
"yaddah_date between " & txtStartDate & _
" and " & txtEndDate
filter
または、フォーム/サブフォームのプロパティを設定できます。