QuickReport交替列印的問題(delphi3 vs delphi7) |
尚未結案
|
jauds
一般會員 發表:1 回覆:3 積分:0 註冊:2003-06-24 發送簡訊給我 |
小弟在最近改到了一支前輩留下來的程式(用delphi3)開發的,
其中有一段程式碼大致如下:
while ....
QuickReport1.Print; //列印封面
QuickReport2.Print; //列印資料
end;
執行的結果會是先將某個dataSet的資料逐筆交替印出(配合套表格式),
也就是QuickReport1先印完一筆,QuickReport2也接著印,
等一筆資料印完之後,再接著印下一筆... 但由於程式經過Delphi 7重新編譯之後,雖然沒有錯誤,
但執行結果卻會變成QuickReport1全部印完,再印QuickReport2...
也就是不會在交替印出來....
雖然已有解決的方法(如:一次只丟一筆資料,或改報表格式...),
但我還是很想知道是什麼原因造成,
我看了一下程式在執行的情形,我猜測原因是:
新版Delphi的QuickReport有用到Mutli-thread的技術,
因此每一個QuickReport就形成一個類似獨立的process在跑,
而舊版的則否,因此舊版可以達成交替列印的效果... 這是小弟的遇到的問題跟猜測,希望對這方面有研究的大大們能不吝指教!!
感恩啊...
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi jauds, 我猜測應該有一個 DataSet 為所有資料(假設為Query1),另一個 DataSet 是 for QuickRep2 用的(假設為Query1),可以使會迴圈控制方式達到此效果
procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.ParamByName('parameter').AsString := 'yourparameter'; Query1.Open; while not Query1.Eof do begin Query2.Close; Query2.ParamByName('id').AsString := Query1.FieldByName('id').AsString; Query2.Open; QuickRep1.Print; //列印封面 QuickRep2.Print; //列印資料 Query1.Next; end; end;ps:建議提供詳細程式原始碼,比較好判定原因 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |