- PR -

【CrystalReports】 サブレポートを使用するとレスポンスが遅くなる

1
投稿者投稿内容
TIM
会議室デビュー日: 2007/01/06
投稿数: 3
投稿日時: 2007-01-06 21:34
初めまして。
表題の件について過去の質問を見ましたが、
同じ現象がありませんでしたので、ご質問させて頂きます。


<環境>
VB.NET2003
クリスタルレポートXI

<現象>
サブレポートを使用すると、レスポンスが遅くなります。

サブレポートを1つ使用すると、表示時間が約1分。
サブレポートを3つ使用すると、表示時間が5分以上。
という感じで実用に耐えられない速度です。

CSVデータをデータソースとしており、
同一ファイルを読み込むようにしています。

同一ファイルを使用していることが原因かと思い、
メインレポートとサブレポートのCSVを分けてみました。
しかし、メインレポートの表示ロジックの部分で遅くなっているようです。
(SetDataSourceメソッドでデータをセットするタイミング)


やりたいことは、
1頁に複数の「詳細」を条件分けして表示し、
それぞれにヘッダーとフッダーを表示することです。

サブレポートで行うのが最適だと思うのですが、
他の方法を考えるべきか悩んでおります。

同じ現象を経験した方やおわかりの方がいらっしゃいましたら、ご教授下さい。
宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-06 23:00
引用:

TIMさんの書き込み (2007-01-06 21:34) より:

サブレポートを使用すると、レスポンスが遅くなります。


それは、致し方ないですね。

引用:

サブレポートを1つ使用すると、表示時間が約1分。
サブレポートを3つ使用すると、表示時間が5分以上。
という感じで実用に耐えられない速度です。


これは、さすがにサブレポートのせいというよりは、
レポート自体が複雑になっている可能性が高いと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
TIM
会議室デビュー日: 2007/01/06
投稿数: 3
投稿日時: 2007-01-08 23:56
>じゃんぬねっと 様

ご回答ありがとうございます。

レポートを再度、見直してみましたが、

項目数:メインレポート、サブレポート共に15個前後
グループ化:メインレポート、サブレポート共に1項目でのみ
サブレポートのリンク:1項目のみ

という感じです。
一般的に見てもたぶん複雑な方ではないと思います。

設定に問題があるかと思い、色々と変えて行ってみましたが、
改善できませんでした。

明日、もう少し頑張ってみて、
ダメだったら他の方法を考えてみようと思います。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-09 00:11
引用:

TIMさんの書き込み (2007-01-08 23:56) より:

レポートを再度、見直してみましたが、

項目数:メインレポート、サブレポート共に15個前後
グループ化:メインレポート、サブレポート共に1項目でのみ
サブレポートのリンク:1項目のみ

という感じです。
一般的に見てもたぶん複雑な方ではないと思います。


あとは、データの件数とリレーションについての情報が欲しいですよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
TIM
会議室デビュー日: 2007/01/06
投稿数: 3
投稿日時: 2007-01-09 22:06

>じゃんぬねっと 様

迅速なご回答ありがとうございます。
また、私の方の返答が遅くなってしまい申し訳ありません。

<データ件数>
20件ほどです。
データ件数を少なくすると、
若干、表示時間が早くなるようです。


<リレーション>
データセットで行っております。
下記のソースです。

Dim rdSuppliers As New ReportDocument
Dim RptConn As New OleDbConnection
Dim RptCommand As New OleDbCommand
Dim RptDataset As New DataSet
Dim RptDataAdapter As New OleDbDataAdapter

'DB接続文字列の設定
'注:プロジェクトファイルホルダの下にあるbinホルダにcsvファイルを置く
RptConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
"Data Source=" & CSVDir & ";" & "Extended Properties=""Text;HDR=YES;FMT=Delimited"""

'コネクションの設定
RptCommand.Connection = RptConn

'SQL文の設定
RptCommand.CommandText = "SELECT * FROM " & Request.QueryString("csvFile")

'データを取得する
RptDataAdapter.SelectCommand = RptCommand
RptDataset.Clear()
RptDataAdapter.Fill(RptDataset)

rdSuppliers.Load(RPTDir & Request.QueryString("rptID") & ".rpt")

rdSuppliers.SetDataSource(RptDataset)


サブレポートを使用しなければ正常に動くので、
これらは問題ないとは思うのですが、
もし何かお気付きの点がありましたら、ご指摘をお願いします。

1

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