0

メインレポートに2つのサブレポートを入れました。メインレポートは正常に表示されますが、[Enter Year]パラメータは2回表示されます。1回はサブレポートのクエリごとに1回表示されます。これは正常なことであり、コードを記述することでおそらく1つのプロンプトに減らすことができます。

しかし、名前付きパラメーターを1回指定する方法が必要だと思います。サブレポートのクエリでそれを取得し、使用します。次に、共有パラメーターを使用して多くのサブレポートに対して同様の収集されたレポートを実行するため、非コードメソッドでこれを実行したいと思います。

私が試したのは次のとおりです。1。メインフォームのテキストフィールドのコントロールソースをに設定して=[Enter Year]も、プロンプトはまったく表示されません。2.メインフォームのデータソースを設定するSELECT * FROM <common table> WHERE year=[Enter Year]と、プロンプトが表示され、サブレポートのデータソースはスキップされますが、奇妙なことに、サブレポートページが無限に繰り返されます。

これはAccess2003用です。

編集: 1。「プロンプトの再利用」をクエリに含めたいので、上記は機能しません。パラメータが(標準の「期間」)フィルタとして使用されていない場合は、もちろん、テキストフィールドを親の値に設定することもできます。

現在、メインレポートは、プロンプトが表示されたパラメーターを列として含む単純なクエリに基づいています。しかし、何らかの理由でAccessは、列(tmpYear)への参照が「疑わしい」/「明確」であると言っています(私は英語のAccessを実行していません)。これは、メインレポートクエリの列が、サブレポートクエリで必要なときに「終了」していないためと考えられます。

私にとって、これは質問を次のように変更します。メインレポートのテキストフィールドの値をサブレポートのクエリに取得する方法

編集2: これを解決するための2つの選択肢があることを理解しました。a)プロンプト値を返すグローバル関数を記述し、その関数をクエリデザインで使用します。b)パラメータを使用して元のクエリを保持し、myQueryDef.Parameters( "")をプロンプト値に設定します。

... b)を除いて、サブクエリプロンプトが表示されます。

(これを断片的な質問にして申し訳ありませんが、おそらく他の人の発見の旅と一致するでしょう。必要に応じて、b)が機能しない理由について新しい短い質問を投稿できます。)

4

1 に答える 1

2

This seems to be possible (at least by my understanding of your question).

You need to put your parameter in the query behind your main report and make it come out as a field:

SELECT YearParam:[Enter Year], <<Other Fields Here>> FROM <<Table NAME>>

Then on the main report, place a textbox in the Report Header with a control source of the field name (YearParam) and name the textbox (txtYearParam, for example).

Now, on each of the queries behind your sub-reports (or on the report filter) make it look at the main report textbox using the following syntax:

Reports!ReportName.txtYearParam

I tested this with a very basic report with 2 sub-reports, and the parameter only appears once and filters correctly.

于 2013-03-06T15:49:29.880 に答える