Crystal Reports データセットをリサイクルする方法はありますか?
-
08-06-2019 - |
質問
メインレポートとは異なる方法で合計がグループ化されたクリスタルレポートを作成しようとしています。これまでにこれを行うことができた唯一の方法は、合計にサブレポートを使用することですが、同じデータを取得するためにデータ ソースに再度アクセスする必要があり、これはナンセンスのように思えます。簡略化した例を次に示します。
date name earnings source location
-----------------------------------------------------------
12-AUG-2008 Tom $50.00 washing cars uptown
12-AUG-2008 Dick $100.00 washing cars downtown { main report }
12-AUG-2008 Harry $75.00 mowing lawns around town
total earnings for washing cars: $150.00 { subreport }
total earnings for mowing lawns: $75.00
date name earnings source location
-----------------------------------------------------------
13-AUG-2008 John $95.00 dog walking downtown
13-AUG-2008 Jane $105.00 washing cars around town { main report }
13-AUG-2008 Dave $65.00 mowing lawns around town
total earnings for dog walking: $95.00
total earnings for washing cars: $105.00 { subreport }
total earnings for mowing lawns: $65.00
この例では、メイン レポートは「日付」によってグループ化されていますが、合計はさらに「ソース」によってグループ化されています。累計の使用例を調べましたが、実際には必要な機能がありません。結果セットを保存し、メイン レポートとサブレポートの両方で同じデータを参照する方法はありませんか?
解決
ふーむ...レポートからストアド プロシージャを呼び出して、すべてを 1 つの場所に含めるのは素晴らしいことですが、(あなたと同じように) 最終的には、たとえデータはすぐそこにあります。
最終的に、レポートの下にビジネス レイヤーを導入し、レポートからデータを「プル」するのではなく、データセットをビジネス レイヤーに「プッシュ」し、データをレポートにバインドすることになりました。利点は、データがレポートに到達する前にデータセットまたはオブジェクト内のコードでデータを操作し、そのデータをレポートにバインドできることです。
この記事 レポートにデータをプッシュする設定方法についての素晴らしい紹介があります。時間やビジネスの制約によりこれができない可能性があることは理解していますが、可能であれば、レポートからすべての「コーディング」を削除し、常に管理コードに含めることができるため、この方法を強くお勧めします。よいこと。
他のヒント
データを再度実行せずにこれを行う唯一の方法は、グループごとの累計を計算する数式を作成することです。既存の累計で遭遇している問題は、集計対象の各グループを追跡することを目的としているということです。すべての「生」データの後に小計を続けたいようであるため、これは機能しません。
グループに一致する行の合計を単純に加算する独自の数式をグループごとに作成する場合は、レポートの最後にそれらを配置できるはずです。このアプローチの欠点は、結果として得られる小計がグループとの関係で動的に変化しないことです。言い換えれば、新しい「ソース」がある場合、それを追加するまで小計には表示されません。また、「犬の散歩」データがない場合でも、小計は表示されます。