- - PR -
サブレポートの宣言
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-16 15:36
ActiveReportのサブレポートの宣言に
ついてお聞きします。 ReportStartイベントでインスタンス化して下さい とマニュアルにありましたので Dim SubReport As Object ReportStartイベント SubReport = New RPTSUB Detail_Formatイベント SubReport.DataSource = データ とコーディングしました。 プロシージャ内で共通で使いたい為 Dim SubReport As Objectと宣言しましたが 正しいでしょうか? | ||||||||
|
投稿日時: 2008-01-16 15:48
"プロシージャ内で共通で" 使うなら型を明確にすべきですよね。 そうではなくて "クラス内で共通で" 使いたいという意味でしょうか? だとしたらその使用する数だけプライベート フィールドを定義した方が無難です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-16 18:02
返答ありがとうございます。 今まではDetail_Formatイベント で Dim SubReport As New RPTSUB とコーディングしていました。 でも下記のグレープシティ社のマニュアルで ReportStartイベントでインスタンスを作成してください とありましたので Dim SubReport As Object ReportStartイベント SubReport = New RPTSUB と修正したのです。 ************************************* サブレポート:各サブレポートのインスタンスはメモリを消費します。このため、サブレポートを使用したセクションを繰り返すようなレポートを出力する場合は注意してください。たとえば、レポートのDetailセクションが2000回繰り返される場合、Detailセクションに貼り付けたサブレポートのインスタンスは、2000個作成されると考えてください。ネストしたサブレポートはその数のインスタンスを複合します。Detailセクションのように繰り返して出力するセクション内で、サブレポートを使用する必要がある場合、そのセクションのFormatイベント内ではなくレポートのReportStartイベントでインスタンス化してください。それにより、サブレポートは1回だけインスタンス化されメモリの消費を抑えることができます。 | ||||||||
|
投稿日時: 2008-01-16 19:04
このあたりは SubReport に限らず、どのオブジェクトにも言えることです。 前の投稿でも少し書きましたが、ReportStart イベントの下準備以外で (他のプロシージャで) 使うのであれば、
私ならば単純にはこうします。 RPTSUB 型の Private フィールドのメンバとして宣言しておけば別に間違いもなければ問題もないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-17 18:50
じゃんぬねっとさん、何度もありがとうございます。
マニュアルに 「レポートのReportStartイベントでインスタンス化してください」 とあった為に Dim SubReport As Object ReportStartイベント SubReport = New RPTSUB Detail_Formatイベント SubReport.DataSource = データ としましたが Dim SubReport As RPTSUB Detail_Formatイベント SubReport.DataSource = データ でOKですよね・・ | ||||||||
|
投稿日時: 2008-01-17 19:04
何が聞きたいのか良くわからなくなってしまいました。 "としましたが" に続く文章が正しい実装だろうということでしょうか? 別にインスタンスの生成は ReportStart イベントで良いですし、さらに言うと DataSource の設定も 1 度だけで良いなら ReportStart イベントだけで良いでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-18 19:17
すいません。
レポートはクラス内で共通で使いたい為 Dim SubReport As Objectと宣言しました。 DataSource の設定は Detail_Formatイベントで 内容を変えながら DataSource に渡す為 Detail_Formatイベントで行います。 なにが聞きたかったのかですが レポートのインスタンスを作成するのに Dim SubReport As Object ReportStartイベント SubReport = New RPTSUB とするのか Dim SubReport As RPTSUB とするのかをお聞きしたかったのです。 | ||||||||
|
投稿日時: 2008-01-18 19:21
ひとつ前の投稿でも書いたように後者... になるでしょうか。(Dim ではなく Private が適切かと思いますが) 型は明示化されていた方が良いですし、ひとつの変数にまとめる意味はありませんよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |