0

tl;dr: メイン レポートから完全にデータを取得するサブレポート内にグループ化レベルを設定することは可能ですか? 単一のデータ セットを取得し、データの 4 つ以上の異なる要約/計算を表示する単一のレポートを作成する必要があります。

================================================== ===============================

各サブレポートで個別のストアド プロシージャ コールを作成するのは簡単です。しかし、多くのデータがすべてのサブレポートに共通であるため、SQL Server から同じデータを繰り返し取得することによるパフォーマンス コストを回避したいと考えています。

1 つのストアド プロシージャからすべての生データを 1 回取得し、そのデータを 1 つの .RPT ファイル内のさまざまなサブレポートにリンクしたいと考えています。これまでのところ、ストアド プロシージャを呼び出さないサブレポートではグループ エキスパートを使用できないようです。グループ化のために選択するレポート フィールドが表示されません。

サブレポートは、次のように計算された費用の概要として説明できます: すべての月の概要、今月だけの内訳、計算された 1 人/月あたりの平均、および当月のプラン別の複数の費用の内訳。

最初のサブレポートでは、メイン レポートから目的のフィールドとパラメーターをリンクすることで、目的のデータをパラメーターとして取得できます。これをグループ化して、特定の日付列の月ごとにこのデータをグループ化し、1 か月あたり 1 行、最後に総計を付ける必要があります。しかし、そのサブレポートでグループ エキスパートをクリックすると、グループ化に使用できるレポート フィールドがありません。

すべての計算には 1 つのデータ セットが含まれるため、1 つのストアド プロシージャ呼び出しからそのセットを取得し、Crystal にさまざまな計算を実行させたいと思います。

サブレポートの有無にかかわらず、同じデータを複数回返すデータベースへの複数の呼び出しを行わずに、Crystal Reports XI でこれを実行できますか?

4

1 に答える 1

0

最終的に私は最初の要求をあきらめました。ここでは、代わりにプランBとして実装したものを示します。

このレポートに必要なすべての詳細レベルのデータを保持するために、SQLServerで新しいテーブルを作成しました。レポートに関連付けられているメインのストアドプロシージャは、1)指定されたパラメータに基づいてテーブルから古いデータを削除し、2)必要なすべてのデータを挿入し、3)最初の最も外側のサマリーレポートに必要なデータのみを返します。

私はCrystalで、グループヘッダーとフッターを要約と現在の合計と組み合わせて使用​​して、2つの異なる方法で合計を計算しています。次に、実行したいより複雑なグループ化、要約、およびフィルタリングのために2つのサブレポートを追加しました。

これらのサブレポートはそれぞれ、独自のストアドプロシージャを呼び出します。このストアドプロシージャは、作成した新しいテーブルに対して、その特定のサブレポートに必要なデータ列のみをクエリします。ここでも、グループヘッダーとフッターを使用し、[詳細]セクションを非表示にして、各サブレポートに必要なグループごとの要約を取得します。

それは私が当初考えていたほどエレガントなソリューションではありませんが、最終的には私たちのニーズを満たします。

于 2011-11-18T15:31:22.287 に答える