2

これが私がしたことです:

基準の1つが[開始日]と[終了日]の間にあるパラメータクエリを作成しました。次に、そのパラメータクエリを他のバインドされたフィールドと一緒に配置し、サブフォームを作成しました。これまでのところ、問題はなく、うまく機能しています。

しかし、印刷やフォームをPDFに変換しようとすると、問題が発生します。たとえば、印刷を依頼するとすぐに、パラメータクエリのポップアップがポップアップ表示され、日付を再度尋ねられます。また、(もう一度)入力した後も、何度も問い合わせが続き、印刷ジョブがキャンセルされます。 。

画面に表示されているものを印刷しようとしているときに、クエリが本質的に実行されないようにするにはどうすればよいですか?PDFを作成しようとしても同じことが起こります。

4

1 に答える 1

1

私のそれほど謙虚な意見ではありませんが、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または、フォーム/サブフォームのプロパティを設定できます。

于 2012-05-03T18:35:12.373 に答える