線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1149
推到 Plurk!
推到 Facebook!

QuickReport交替列印的問題(delphi3 vs delphi7)

尚未結案
jauds
一般會員


發表:1
回覆:3
積分:0
註冊:2003-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-19 22:16:21 IP:218.170.xxx.xxx 未訂閱
小弟在最近改到了一支前輩留下來的程式(用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-22 12:41:36 IP:210.65.xxx.xxx 未訂閱
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
系統時間:2024-11-25 8:38:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!