4


1

私は毎月数百万人(数百万人ではないにしても)の顧客に請求書を送るプロジェクトに取り組んでいます。 多くのデータを操作する必要があります。興味を持ち、内部APIを介して動的に動的に計算する必要はありません。

現在、私は一度に2,500枚の請求書の塊で動作し、各範囲が完了したときにすべてのデータを含むXMLファイルを書き出すプロセスを持っています。 その後、Crystal Reportsを使用してそのデータについてレポートします。数分かかります。 私はこのデータを報告するためのより良い方法を探しています、そして何らかのアドバイスが必要です。

CrystalはXMLの解析が遅いだけなのでしょうか。 Crystalにインメモリデータセットを適用しようとしましたが、500レコード以上になると、XMLルートの方がより効率的になるようです。 データをSQLデータベースに書き出して、インデックス最適化を使用してそのように報告する必要がありますか? それとももっと早い方法がないのでしょうか。

4 Answer


2


私は過去にCRと同じことに遭遇しました。 私がその問題にぶつかったとき、私は新しい開発をXML StylesheetsからHTMLに切り替えました。 実行は速くなりましたが、開発に時間がかかりました。


2


私の経験では、Crystal Reportsは非常に大規模なレポート作成プロジェクトでは遅くなります。

特に、それらがインメモリデータセットから生成されたものである場合、他のいくつかのレポートソリューションは大規模なレポートプロジェクトをよりよく処理する傾向があることがわかりました。 このために Telerikのレポート作成ツールを試すことをお勧めします。


2


レポートをマルチスレッド化することを考えましたか。 または、レポート生成のサブセットを処理するために複数のサーバー/サービスを使用する。

CrystalレポートXIを使用していますが、非常に遅いことがわかりました。 また、単一のサービスからマルチスレッド化する場合、Crystalレポートには作成できるスレッド化レポートの数に制限があります。 Sql Server 2005のPdfSharpとストアドプロシージャを使用して、レポートを実行します(ご使用のサイズよりも小さい、約3万件のレポートなど)。 そしてこれは非常に時間のかかるプロセスです。

それで、サブセットを生成するオプションとして複数のサービス/サーバーを見てください。

編集

後の考えとして、私は クリスタルの質問 X-の前に出しました


1


個人的には、Crystal Reportsがメモリを占有していることがわかり、小さなデータセットでも起動に時間がかかります。 私達はまたWin2Kを使用しているユーザー向けにVS 2008で開発しています、それでVS 2008に同梱されているCRのバージョンはXPかそれ以降のバージョンでしか動かないので、バージョンの衝突がありました。

すべてのレポートを XMLにシリアル化されたメモリ内のオブジェクトに変換しました。 HTML / CSS、およびWebBrowserコントロールを使用して印刷することができます。 これで、Crystalが起動するのを待つのではなく、XMLが構築されるとすぐにレポートが読み込まれ、表示時間が最大30秒から1秒未満に短縮され、MSIサイズが最大27MBから1.5MBに減少しました。