2011-11-15 12 views
5

私はCrystal Reportsの新機能を使用しており、Crystal Reports 2008を使用してレポートを作成しています。Crystal Reports 2008の親レポートとサブレポートの間でデータセットを共有していますか?

私たちは、単一のソースからのデータは、3種類の方法で報告書で提示する必要要件をしました。

だから、方法は私がDBから同じ手順およびこれらのサブレポートを保持するコンテナレポートに設定されているデータソースとの3種類のサブレポートを持って、それを設計しました。ユーザーの選択に基づいてレポートを個別に表示するかグループ化するかは、コンテナレポート内のサブレポートを抑制/非表示にしません。

レポートは、現在のデザインの要件に従って完全に機能します。しかし、ユーザーが3つのプレゼンテーションモードのすべてを一緒に見ることを選択したとき、つまり3つのサブレポートがすべて呼び出されたとき、レポートのパフォーマンスが問題になります。明白な理由は、副レポート間で1回のフェッチと再利用ではなく、副レポートによってDBからフェッチされた同じデータが個別に取り出されることです。私は、ソースからのデータセットをサブレポート間で共有できる方法があるべきだと思っていましたが、DBを再起動する必要はありません。しかし、私はCrystal Reportsでこれを行う方法をまだ見つけていません。パフォーマンス上のメリットのためにこれを実装できる方法はありますか?

注:

1)私は、同じデータを提示するために、3つの別々のサブレポートのデザインを選んだ 要件は、それはモジュラー望んでいるからです。しかし、私は気付いています。 使用されているデータが の場合、通常はサブレポートを使用することはお勧めしません。

2)各サブレポートのデータの提示は、かなり複雑です。各 サブレポートでは、少なくとも4〜5つのグループセクションが使用され、サブレポート全体で同じ ではありません。だから、基本的に私はこの パフォーマンス上の問題を回避するために、サブレポートを使用せずに 単一のレポートで複数のグループセクションで異なるプレゼンテーションを実施 への道を知りません。

3)私はかなりDBの手順のすべてを最適化したのだが、 ない痛みのポイントです。

私はGoogleを使いこなしていましたが、わたしが理解していると思っていましたが、私はCrystal ReportsのSSRSのデータ領域のような機能を探しています。私はSSRSを知らず、私が読んだことからデータ領域を理解しなかったので、これは間違っているかもしれません。

要約すると、Crystal Reportsは、メインコンテナレポートのDBからデータを取り出し、サブレポート全体に渡して、DBをもう一度打つことなく、その機能をサポートしていますか?

答えて

2

サブレポートは、ちょうどメインレポートなどのデータソースにバインドします。メインレポートのデータは、通常、パラメータとして渡されます。私が知っている限り、バインディングプロセスでデータキャッシングは発生しません。カスタムレポートビューアでレポートを表示している場合は、サブレポートのデータソースをメインレポートと同じデータソースでバインドし、余分なラウンドトリップをサーバーに保存できます。それ以外の場合は、説明に基づいて、メインおよびサブレポートのデータが同じストアドプロシージャのデータである場合に、条件付き書式をクリエイティブに使用してグループセクションを非表示または表示することができます。

+0

返信いただきありがとうございます。メインレポートの同じデータソースを持つサブレポートのデータソースをバインドする際の説明を理解できませんでした。これは私が必要とするものです。しかし残念ながらあなたの返事からどのようにそれを行うか分からない。ありがとう。あなたがその方向に向けることができれば助けになるでしょう。 – blntechie

+0

javaまたは.net crystal report viewerを使用し、レポートデータソースをコードでバインドする必要があります。エンドユーザーはレポートをどのように表示しますか? – Justin

+0

レポートURLにリンクしているアプリケーションからパラメータを指定してブラウザウィンドウを起動するだけです。私たちのアプリにカスタムレポートビューアはありません。 – blntechie

関連する問題