- - PR -
ActiveReportsの変数宣言について
1
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-20 22:29
開発環境は、VB.NET2003でActiveReportsを使用しています。
帳票がTESTAとTESTBの2つ存在します。その帳票をそれぞれ出力するには、以下のようにそれぞれ記述すると思います。 Dim rptA As New TESTA Viewer1.Document = rptA.Document rptA.Run(True) Dim rptB As New TESTB Viewer1.Document = rptB.Document rptB.Run(True) これを、rptMain という変数を作成し、IF文によって出力帳票を変更するように、以下のように変更してみました。 Dim rptMain As New Object Dim rptA As New TESTA Dim rptB As New TESTB If i = 1 Then rptMain = rptA Else rptMain = rptB End If Viewer1.Document = rptMain.Document rptMain.Run(True) そうすると、ActiveReportsをプレビューされるまでの時間が遅くなってしまいました。 どうして、Objectにしたかというと、それしか思いつかなかったためです。 上記のようなことは、他に可能なのでしょうか?コーディングを教えてください。 よろしくお願いいたします。 [ メッセージ編集済み 編集者: KK 編集日時 2006-06-20 22:31 ] | ||||||||||||||||||||
|
投稿日時: 2006-06-21 07:41
遅延バインドされるからですね。 Option Strict を On に設定されることをお勧めします。 ...と、言いたいところなのですが、(;^-^)
使わないかもしれないモノまでインスタンス化しているから、当初のコードに比べて遅延しているのだと思います。 少なくとも帳票は 1 つしか使用しないハズです。 であるのに、2 つともインスタンス化しています。 帳票のインスタンス化は時間を要します。 これでは、ただの無駄ですよね。 インスタンス化とは、どういうことかを考えてみる必要があります。
ではなく、素直にその型ごとで分岐させるべきだと思います。 CLR プログラミングの主役は "型" ですから、これを疎かになると保守性も悪くなります。 (System.Object は使わない)
と、このように使う直前で (使うと決まってから) 必要なものだけインスタンス化すべきでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-06-21 19:53
じゃんぬねっと様
使う直前で、必要なものだけインスタンス化するようにしました。 わかり易い説明、ありがとうございました。 |
1