(C#およびCrystal Reports 2008を使用して)既存のCrystal Reportを動的に変更して、同じレイアウトを使用して(同じデータベースからの)根本的に異なるデータについてレポートできるようにしたいと思います。その理由は、ユーザーが以下を指定できるアプリケーションを構築しているためです。
- 関心のあるデータのみが表示されるようにするフィルター(つまり、whereclause)。
- [例:ニューヨークの建物のみを表示]
- 表示するテーブルを指定します
- [例:建物と床を表示しますが、部屋は表示しません]
- 表示するフィールドを指定します
- [例:建物ID、番号、名前、住所、階数を表示する]
- セクションのグループ化方法を変更する
- [例:建物の用途、建物の年などでグループ化]
- チャートで使用されるフィールドを変更します
- [例:建物の用途別の面積、建物の用途別の占有率、建物ID別の面積]
UIの柔軟性のために、ユーザーがレポートを試みることができるさまざまな種類の「質問」があり、考えられるすべての組み合わせについてレポートを作成したくありません。私が達成しようとしていることの例については、下の画像を参照してください。左側のレポートは、エリアごとにグループ化された建物を示しています。右側のレポートは、サイトごとにグループ化された建物を示しています。
レポートの比較http://img119.imageshack.us/img119/9052/performancereportcomparbt7.png
編集:
Philippe Grondierが提案したように、レポートパラメータを使用してレポートを変更しようとします。私はグループを抑制することによってこれを行うことに成功しました。グループが抑制されると、グループは上にスライドして空白領域を埋め、すべてが空白なしで整列します。ただし、同じ動作は個々のテキストオブジェクトには当てはまりません。テキストオブジェクトが抑制されると、そのフィールドの出力は空のスペースになります。私がやりたいのは、テキストオブジェクトを抑制して、行全体が抑制されるようにすることです。これにより、その下のすべてのエントリが1行「バンプ」されます。どうすればこれを達成できますか?