PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
22825 06/10/24 12:26:44 RE(2):PB9.0: コンポジット By bmt
22798 06/09/28 10:53:38 RE(1):PB9.0: コンポジット By 梶
22794 06/09/27 12:03:45 PB9.0: コンポジット By bmt

カテゴリ:データウィンドウ
日付:2006年09月28日 10:53 発信者:梶
題名:RE(1):PB9.0: コンポジット

bmtさん、こんにちは。

コンポジットでは、仰っているような現象は回避のしようがなさそうですね。
私が似たような帳票出力を行ったときは、ヘッダ有りDWとヘッダ無しDWとを作成し
非表示状態でウィンドウにデータウィンドウを貼り付けておき、それぞれの
データウィンドウのPrintPageイベントで、ヘッダ有りは1頁目以外は「return 1」
ヘッダ無しは1頁目のみ「return 1」するように記述しました。
後は、それぞれのデータウィンドウをShareし、片方にデータを入れておいて
PrintDataWindowメソッドで出力するようにしましたね。

データをセットするループの中で、途中で再度ヘッダを出力する必要のある
データが来たら、その都度PrintDataWindowメソッドで出力して、
その後、データウィンドウをReset。そのまま、後続のデータをセットして・・・
とこんな感じで、bmtさんの希望の出力が実現できると思います。

注意点としては、データウィンドウをShareしてしまうと、出力明細行数が
異なるので、そのままデータをセットするだけでは、行がずれてしまうので、
ダミー行を入れて調整する必要があります。

ちなみに、現在は明細行数を固定で20行と30行としているようですが、
帳票の用紙サイズや、余白設定で印字できる行数が変わるかもしれませんので、
印刷前にダミーで行を複数行挿入して、Describeメソッドで
「datawindow.LastRowOnPage」プロパティの値を取得すると、
1頁辺りの印刷可能行数を判断できますよ。

例)
//ヘッダー有・無のページ内行数を取得
dw_prn1.object.data[20,1] = \"\"
dw_prn2.object.data[20,1] = \"\"

dw_prn1.Modify(\"datawindow.print.Preview=~\"Yes~\"\")
dw_prn2.Modify(\"datawindow.print.Preview=~\"Yes~\"\")

ll_max[1] = long(dw_prn1.Describe(\"datawindow.LastRowOnPage\"))
ll_max[2] = long(dw_prn2.Describe(\"datawindow.LastRowOnPage\"))


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows XP
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.