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

C#での業務帳票

  • 題名: C#での業務帳票
  • 著者: ミッキー
  • 日時: 2006/08/05 14:57:14
  • ID: 17012
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[(WinXP,Microsoft Visual Studio 2005,C#)]
分類:[.NET]

始めまして。
私は業務帳票の開発をしています。
サードパーティーを使わずに
PrintDocumentイベントで処理しているのですが、
内容の印字まではできるのですが、改頁がうまくいきません。
DO WHILEを使用した時の良い改頁方法をご教唆ください。
下記に例を転記します。

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Sql = "SELECT * FROM 担当者";
OleDbDataReader dr = Com.OleDTRDc(Sql);
if(dr.HasRows == true)
{
while(dr.Read())
{

//行あふれ、担当部署が変わると改頁する
→→→→ if(200 > WCNT || OldBusyo.Trim() != dr["担当部署"])
→→→→ {
→→→→ e.HasMorePages = true;
→→→→ }

Print_Set(dr);

Deta_Prt(sender,e);

WCNT++;

OldBusyo= Mji.NullSP(dr["担当部署"]);
}
}
else
{
printPreviewDialog1.Close();
}


//このページで終了する
e.HasMorePages = false;
}

上記→→→→部分のように、KEY割れ条件、あるいは1頁あたりの
MAX行数をオーバーフローした時に改頁を行いたいのですが、
e.HasMorePages = true;
と設定しても、printDocumentイベント内をループしないので、
改頁しません。
何か、強制的に改頁を発動できるような手法はありませんでしょうか?

それとも、こういった開発を行うには、
何か別のイベントを使用した方が良いのでしょうか?

宜しくお願い致します。
■No17012に返信(ミッキーさんの記事)
> MAX行数をオーバーフローした時に改頁を行いたいのですが、
> e.HasMorePages = true;
> と設定しても、printDocumentイベント内をループしないので、改頁しません。
> 何か、強制的に改頁を発動できるような手法はありませんでしょうか?

HasMorePages プロパティの役割を誤解されていないでしょうか?
true の場合「再度 PrintPage イベントが発生する」というのが本来の役割です。

つまり、2 回目にイベント ハンドラへ制御が移れば、2 ページ目を印字ということになります。
ループ内で解決することはできません。
  • 題名: Re[2]: C#での業務帳票
  • 著者: ミッキー
  • 日時: 2006/08/12 16:22:04
  • ID: 17107
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
じゃんぬねっとさん
ありがとうございます。

ロジックの組み換えでしか対応できないのですね。
がんばってみます。

ありがとうございました。
解決済み!

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