DOBON.NET DOBON.NETプログラミング掲示板過去ログ

activereportsにて印刷とプレビューの処理判断の方法

環境/言語:[Windows 7/ vb2012.net Winアプリ]
分類:[.NET]

お世話になります。

表題の件ですが以下の通りプログラムを組んでおります

呼び出し元フォーム
 If 印刷 Then '印刷時(プレビュー表示なし)
  Using report As Denpyo = New Denpyo()
  report.Run()
  report.Document.Print(False, False, False)
  End Using
 Else'プレビュー時
  Windows.Forms.FormUtil(Of BaseForm).Show(New DenpyoPrv, Me) 'プレビュー画面表示
 End If


activereports(Denpyo)
 Private Sub Detail_AfterPrint(sender As Object, e As EventArgs) Handles Detail.AfterPrint
  データ更新処理(1データ印刷毎に印字済みフラグをつける)
 End Sub

プレビュー表示フォーム(DenpyoPrv)
 Private Sub Viewer2_Load(sender As Object, e As EventArgs) Handles Viewer2.Load
  Using report As OkurijyoListCool = New OkurijyoListCool()
  report.Run()
  Me.Viewer2.Document = report.Document
  End Using
 End Sub


やりたいことは
 1.プリンタで帳票紙出力の際1データ印字毎にデータ更新したい
 2.プレビュー表示時はデータ更新しない
 3.プレビュー画面から印刷時はデータ更新を行う
ですが上記ソースではプレビュー表示時点でデータ更新処理が実行されてしまいます。
印刷かプレビューのフラグを立ててDetail_AfterPrintイベントで判断しようすると
3のときはデータ更新処理が実行されなくなりどうしたものかと頭を抱えています。

もし、何かいい方法がございましたらご教授いただければ幸いでございます。

わかりにくい長文になりましたが何卒よろしくお願いします。
下記に以前回答した記録があります。
ご参照のほど、宜しくお願い致します。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=31159&no=0&KLOG=1
■No32290に返信(kikuさんの記事)
> 下記に以前回答した記録があります。
> ご参照のほど、宜しくお願い致します。
> http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=31159&no=0&KLOG=1
>

kikuさんご回答ありがとうございます。
私の質問の仕方が悪かったかもしれません。

ソースをもう少し変更してみました。

呼び出し元フォーム
 If 印刷 Then '印刷時(プレビュー表示なし)
  Using report As Denpyo = New Denpyo()
  report.Run()
  report.Document.Print(False, False, False)
  End Using
 Else'プレビュー時
  Windows.Forms.FormUtil(Of BaseForm).Show(New DenpyoPrv, Me) 'プレビュー画面表示
 End If


activereports(Denpyo)
 Private Sub Detail_AfterPrint(sender As Object, e As EventArgs) Handles Detail.AfterPrint

  If 印刷 Then '印刷時(プレビュー表示なし)
  データ更新処理(1データ印刷毎に印字済みフラグをつける)
  Else'プレビュー時
  If プレビューからの印刷 then
  データ更新処理(1データ印刷毎に印字済みフラグをつける)
  End If
  End If
 End Sub

プレビュー表示フォーム(DenpyoPrv)
 Private Sub Viewer2_Load(sender As Object, e As EventArgs) Handles Viewer2.Load
  プレビューからの印刷 = false
  Using report As OkurijyoListCool = New OkurijyoListCool()
  report.Run()
  Me.Viewer2.Document = report.Document
  End Using
 End Sub

 印刷ボタンクリックイベント--このイベントの実装方法がわかりません
  プレビューからの印刷 = true
 end 印刷ボタンクリックイベント

印刷とプレビューの判断は呼び出し元フォームで判断できています。
問題は以下の通りになります。
 1.プレビュー画面表示時にactivereports(Denpyo)のDetail_AfterPrintイベントが実行されてしまう
 2.プレビュー画面からの印刷ボタンクリックイベントの実装方法(ソース)がわからない
 3.イメージは上記ソースだと思ったのですがあっているのか?
   (この場合activereports(Denpyo)のDetail_AfterPrintイベントが
    プレビュー画面表示時とプレビュー画面からの印刷ボタンクリックで
    2回実行されることになるのですがこういったソースは可能なのでしょうか?)

重ね重ね長文質問になりましたけどどうかよろしくお願いいたします
環境を良く読まずに回答してしまいました。
ActiveReports利用の場合ですね。

ActiveReportsに関しては利用したことがないため、
対応できるかどうかはわかりません。
■No32291に返信(涙目のルカさんの記事)
>  印刷ボタンクリックイベント--このイベントの実装方法がわかりません
>   プレビューからの印刷 = true
>  end 印刷ボタンクリックイベント
>
環境がないので分かりませんが
プレビューからの印刷 = true
report.Document.Print(False, False, False)
プレビューからの印刷 = false
これでいいのでは?

DOBON.NET | プログラミング道 | プログラミング掲示板