- PR -

ActiveReport 進捗ダイアログが消えない

1
投稿者投稿内容
たけ
会議室デビュー日: 2008/09/09
投稿数: 5
投稿日時: 2008-09-09 15:17
初めて投稿させていただきます。

ActiveReport .Net2.0J(トライアル版)とVB.Net2005を使用して
帳票出力処理を組んでいます。

Dim report As ActiveReport
report.Run()
report.Document.Print(False, True, False)

上記のように出力実行時に印刷の進捗ダイアログを表示させるように
しているのですが、ダイアログについているキャンセルボタンを押下
すると、印刷がキャンセルされた後もダイアログが表示されたままに
なります。
このダイアログを消去させるにはどうしたらよいのでしょうか?

よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-09 16:10
提示して頂いたソースには記載されていませんが 'report' の後始末はどうしていますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たけ
会議室デビュー日: 2008/09/09
投稿数: 5
投稿日時: 2008-09-09 16:46

>>提示して頂いたソースには記載されていませんが
>>'report' の後始末はどうしていますか?

特に何もしていないです・・。
VB.NETもActiveReportも初めてなもので正直「後始末??」と
いうレベルです。

Try
Try
'フォーム無効化
Form.Enabled = False
Form.Cursor = Cursors.WaitCursor

Dim report As ActiveReport

report.Run()
report.Document.Print(False, True, False)

   @
   'ここに後始末処理?

Finally
   A
'フォーム有効化
Form.Cursor = Cursors.Default
Form.Enabled = True
End Try
Catch ex As Exception
 B
エラー処理
End Try

キャンセルすると、@を通らずにA→Bと実行されるのですが
@に後始末処理でよいのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-09 17:19
引用:

たけさんの書き込み (2008-09-09 16:46) より:

特に何もしていないです・・。


普通はそれで問題ないはずでしょうけど、とりあえず Document と ActiveReports 自体の Dispose メソッドを実行してみてください。 それと Print メソッド以降に制御が移っているか、あるいは ActiveReports に何かしているコードがないか確認してください。

引用:

   'ここに後始末処理?


そこよりむしろ Finally ですね。 もしくは Using ステートメントがお勧めです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たけ
会議室デビュー日: 2008/09/09
投稿数: 5
投稿日時: 2008-09-09 18:41
Bの箇所にdisposeを入れてみましたが、現象は変わりませんでした。
またキャンセルした場合、Aに何か記述しても実行されませんでした。
(元々の処理にはAの箇所には何も記述していません)
キャンセルした場合、エラー扱いになってB→Cと遷移するようです。
問題のある箇所が判らないので、省略していた部分も記述してみます。
原因と思しきところがあればご指摘ください。
よろしくお願いします。

Try
Dim report As ActiveReport

Try
'フォーム無効化
Form.Enabled = False
Form.Cursor = Cursors.WaitCursor

@
IF Flg = 1 then
Dim rep AS RepForm1 '←ActiveReportの帳票レイアウトのクラス
report = rep
else
Dim rep AS RepForm2 '←ActiveReportの帳票レイアウトのクラス
report = rep
End if

'プリンタ名セット
report.Document.Printer.PrinterName = ○○○
'レポートデータセットに取得データセット
report.DataSource = list '← listは出力データ

report.Run()
report.Document.Print(False, True, False)

   A

Finally
   B
report.Document.dispose
report.dispose

'フォーム有効化
Form.Cursor = Cursors.Default
Form.Enabled = True
End Try

Catch ex As Exception
 C
エラー処理 (メッセージを表示しているだけ)
End Try
たけ
会議室デビュー日: 2008/09/09
投稿数: 5
投稿日時: 2008-09-09 21:19
解決、といえるかどうか分からないのですが
出力先のプリンタがFinePrintの時だけ、現象が
発生することが分かりました。
普通にプリンタ出力した場合はキャンセルしても
ダイアログは残らないです。

FinePrintを使用した時はキャンセルを押さない
ように運用してもらうようお願いしてみます。

じゃんぬねっと様、どうもありがとうございました。
1

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