1

(C#およびCrystal Reports 2008を使用して)既存のCrystal Reportを動的に変更して、同じレイアウトを使用して(同じデータベースからの)根本的に異なるデータについてレポートできるようにしたいと思います。その理由は、ユーザーが以下を指定できるアプリケーションを構築しているためです。

  1. 関心のあるデータのみが表示されるようにするフィルター(つまり、whereclause)。
    • [例:ニューヨークの建物のみを表示]
  2. 表示するテーブルを指定します
    • [例:建物と床を表示しますが、部屋は表示しません]
  3. 表示するフィールドを指定します
    • [例:建物ID、番号、名前、住所、階数を表示する]
  4. セクションのグループ化方法を変更する
    • [例:建物の用途、建物の年などでグループ化]
  5. チャートで使用されるフィールドを変更します
    • [例:建物の用途別の面積、建物の用途別の占有率、建物ID別の面積]

UIの柔軟性のために、ユーザーがレポートを試みることができるさまざまな種類の「質問」があり、考えられるすべての組み合わせについてレポートを作成したくありません。私が達成しようとしていることの例については、下の画像を参照してください。左側のレポートは、エリアごとにグループ化された建物を示しています。右側のレポートは、サイトごとにグループ化された建物を示しています。

レポートの比較http://img119.imageshack.us/img119/9052/performancereportcomparbt7.png

編集:

Philippe Grondierが提案したように、レポートパラメータを使用してレポートを変更しようとします。私はグループを抑制することによってこれを行うことに成功しました。グループが抑制されると、グループは上にスライドして空白領域を埋め、すべてが空白なしで整列します。ただし、同じ動作は個々のテキストオブジェクトには当てはまりません。テキストオブジェクトが抑制されると、そのフィールドの出力は空のスペースになります。私がやりたいのは、テキストオブジェクトを抑制して、行全体が抑制されるようにすることです。これにより、その下のすべてのエントリが1行「バンプ」されます。どうすればこれを達成できますか?

4

1 に答える 1

3

更新の種類 (および更新に関連するオブジェクト) に応じて、無料の craxdrt.dll (デザイナー ランタイム ライブラリ) または無料ではない craxddrt.dll (デザイナー デザインおよびランタイム ライブラリ) のいずれかを使用できます。詳細は忘れましたが、ネットで調べれば分かると思います。

あなたの質問:

  1. フィルター: 実行時にレポート オブジェクトの SQLQueryString を更新するか、事前に宣言されたパラメーターを更新して、それらが 'Where' 句に追加されるようにすることができます。パラメータの追加はcraxddrt dllに限定されていると思いますが、既存のものの更新はcraxdrt dllで行うことができます。CR インターフェースを使用してこれらのパラメーターを更新するか、コードを使用して更新できます。クライアント インターフェースでこれらの値を (たとえば、アクティブなフォームから) 更新し、プログラムで更新することも考えられます。一例はこちらをご確認ください。
  2. 表の非表示: 「表の非表示」には意味がないと思います。集計値を計算するためにすべての関係を使用できるようにする必要があるためです。したがって、詳細を表示/非表示にしたり、さまざまなグループ化レベルを表示/非表示にしたりする可能性をユーザーに提案できます。これは、無料の craxdrt ライブラリと、レポート オブジェクトの「areas」コレクション/「suppress」メソッドを使用して簡単に実行できます。
  3. ここでも、レポートのさまざまな領域で遊ぶことが最善の解決策のようです
  4. 考えないことをお勧めします!データの順序を変更すると、特にグループ レベルで中間集計を計算する場合に、予期しない結果が生じる可能性があります。要求に応じて、レポートに特定のグループを表示しないことにより、提案 (2) に固執するか、単純なフォーム (1 つのグループのみ) の場合、グループ定義で使用されるパラメーターを実行時にプログラムで更新することができます。方式。
  5. 提案 (2) に戻ります。完全なレポートを作成すると、期待されるすべてのデータが表示されます。その後、レポートのさまざまなセクションを表示または非表示にします。

実行時に別のデータベース/別のテーブルへのレポート接続を変更する方法を示す別のコード例がここにあります。

于 2009-01-20T11:17:15.117 に答える