- PR -

CrystalReportViewrのレポート表示時

1
投稿者投稿内容
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-14 18:36
お世話になっています。

WindowsアプリケーションでCrystalReportViewr+DataSetを使用してレポートを表示させているのですが、このReportViewrは全ページを作成してから表示しているようです。

単純なデータ一覧22ページ程度のデータで表示までの時間が3〜4分と、あまりに表示までに時間がかかりすぎて困っています。

最初のページを作成した時点でレポートを表示されるようにはできないのでしょうか。

またレポート表示のパフォーマンスを上げる方法はあるのでしょうか。

よろしくお願いいたします。
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2003-03-17 17:41
質問に対する具体的な解決策でないので恐縮ですが、
3〜4分は、ちょっと時間がかかりすぎだと思います。

参考までに、私も20ページ程度の帳票をTogさんと(おそらく)同じ方法で
表示させましたが、せいぜい長くて30秒〜40秒といったところでした。

何か具体的なソース等があれば検討も可能かと思いますが…。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-17 20:27
てつさん。お返事ありがとうございます。

ソースといっても
コード:
 Public Sub ShowReport(ByVal dataSource As Object, ByVal report As portDocument)
            report.SetDataSource(dataSource)
            CrystalReportViewer1.ReportSource = report
            Me.ShowDialog()
        End Sub


のようにCrystalReportViewrを置いたフォームにデータとレポートを投げているだけなのです。

ただレポート内でテーブルを4つほどLeftOwner+InnerJoinでリレーションさせているため、この辺りが重たくなる原因なのではと考えて、組み合わせを変えてみたりしたのですが、なかなか改善されません。

WindowsFormコントロールのReportViewrではなく、製品のCrystalReportプレビューでは
1ページが作成された時点で表示していたと思うのですが、ReportViewrでは無理なのでしょうか。

さすがに表示までに数分というのは時間がかかりすぎて、実用できなくなります。
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2003-03-18 14:40
確かに、よく考えたら表示自体の部分に関してはあまり手の入れようも無いですね(笑)

私のやり方を説明しますと、基本的にはレポート表示時にあまり余計な処理は入れないようにしました。
Togさんの状況に合わせてみますと、4つのテーブルをJOINしたテーブルを作ってしまいまして、そのJOINテーブルに入れる処理はレポートの表示とは別の場所でやっておいて、レポート表示では一つのテーブル(JOINテーブル)からだけ表示させるような形にしました。

あと、
CrystalDecisionsのCR9とCRfor.NETの比較のページに、ビューの項目で「アドホックレポート作成」という機能がCR9にはあってCRfor.NETにはないのですが、これがもしかしたら「最初のページを表示した時点でレポート表示する機能」でしょうか?
そうすると.NET版では全部作成してから出ないと表示できないことになりますが…
http://japan.crystaldecisions.com/products/crystalreports/net/editioncomparison.asp

[ メッセージ編集済み 編集者: てつ 編集日時 2003-03-18 14:45 ]
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-18 20:45
>私のやり方を説明しますと、基本的にはレポート表示時にあまり余計な処理は入れないようにしました。

なるほどなるほど。お返事ありがとうございます。

この方法だとよけいな処理がない分処理速度が遅くなることはないですね。
あまりに遅いようなので作り直してみます。

「アドホックレポート作成」とはもっと高度な帳票作成のようですね〜(笑)
1

スキルアップ/キャリアアップ(JOB@IT)