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

[QuickReport]--如何在印之前計算每個group的總頁數

尚未結案
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-17 15:36:11 IP:61.67.xxx.xxx 未訂閱
到底要怎樣才能得到每個group正確的總頁數呢??我現在是先用query先找出每一類的資料筆數 某個欄位長度大於40(因為要折成兩行)的筆數,然後在除以detailband可印的筆數..但是這樣會跟報表自己印出來的有差距...detailband印的行數好像也沒那麼固定,有什麼好方法呢??
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-17 16:10:12 IP:218.80.xxx.xxx 未訂閱
你可以在翻页前加个计数器,每增加一页就 1
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-17 16:15:43 IP:210.68.xxx.xxx 未訂閱
Hi minibaby: 試試看下面幾篇有沒有幫助    http://delphi.ktop.com.tw/topic.php?topic_id=48336 http://delphi.ktop.com.tw/topic.php?topic_id=51634    ~悠遊法國號~
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-21 08:51:35 IP:61.67.xxx.xxx 未訂閱
這些方法都是算出這份報表的總頁數,但我是我要算這份報表的每個group 的頁數,也就是說這份報表有100頁,有5個group...第一個group有15頁,第二個有20頁,第三個有18頁,第四個有25頁,第五個有22頁...在印每個group的時候算出該group 的頁數..quickreport可以這樣做嗎??(除了我原來使用的方法外)
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-21 09:43:08 IP:218.80.xxx.xxx 未訂閱
道理是一样的啊,你在每个GROUP前加个计数器呀,每增加一个GROUP就 1
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-21 11:12:08 IP:210.65.xxx.xxx 未訂閱
Hi minibaby:    一個想法,概念來自    http://delphi.ktop.com.tw/topic.php?topic_id=42148 事實上,與 sl@cableplus.com.cn 大大的想法不謀而合 Sample 見以下連結 http://delphi.ktop.com.tw/loadfile.php?TOPICID=16305122&CC=364658 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
葡萄糖
一般會員


發表:5
回覆:18
積分:4
註冊:2003-11-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-23 12:30:45 IP:61.218.xxx.xxx 未訂閱
這個問題剛好我日前有遇到 我是這樣用的(運用每個定單不同) Query2BDEDesigner.AsVariant 是group -> Expression 的值 Q2Pb : Integer ; Q2Pa = Query2BDEDesigner.AsVariant procedure TFED02F.QuickRep3StartPage(Sender: TCustomQuickRep); begin if Q2Pa = Query2BDEDesigner.AsVariant then Q2Pb := Q2Pb 1 (一樣加1) else begin Q2Pb := 1 ; (不同時已換一個訂單) end ; QRLabel1.Caption := Q2Pb ; Q2Pa = Query2BDEDesigner.AsVariant (剛剛放錯) end ; 好像複雜點.. 不知其他大大有沒有更有的方法 發表人 - 葡萄糖 於 2004/06/23 12:50:05
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-23 13:41:04 IP:61.67.xxx.xxx 未訂閱
那我可以在印每個group的第一頁時就秀出那個group的總頁數嗎??
jasonma168
一般會員


發表:39
回覆:33
積分:14
註冊:2002-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-23 13:51:50 IP:61.64.xxx.xxx 未訂閱
引言: 那我可以在印每個group的第一頁時就秀出那個group的總頁數嗎??
除非自己預測
delphiwww
資深會員


發表:145
回覆:363
積分:368
註冊:2002-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-23 16:43:19 IP:210.243.xxx.xxx 未訂閱
你的問題我認為解法如下:(我也沒有try,不過應該沒錯) 1.設定一個全域的counter array 2.使用prepare,主要是因為,在prepare後,所有的資料及Event都會跑一便, 同時假如你資料尚未顯示的話,計算起來很快 3.設定一個boolean變數用來區分目前是prepare,還是preview or print 4.當為prepare時,將group計算的頁數填入counter array中 5.當preview or print時,將counter array中的資料顯示在qrlabel上面    
引言: 到底要怎樣才能得到每個group正確的總頁數呢??我現在是先用query先找出每一類的資料筆數 某個欄位長度大於40(因為要折成兩行)的筆數,然後在除以detailband可印的筆數..但是這樣會跟報表自己印出來的有差距...detailband印的行數好像也沒那麼固定,有什麼好方法呢??
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-06-24 10:05:22 IP:61.67.xxx.xxx 未訂閱
delphiwww大大: 不好意思,我對陣列不熟,對prepare有點似懂非懂,可否麻煩您詳細解說該如何下手呢??
jumo
一般會員


發表:33
回覆:65
積分:24
註冊:2002-04-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-06-24 11:38:13 IP:211.21.xxx.xxx 未訂閱
利用 QuickRep1.Prepare 來計算報表的頁數, 然後在 QuickRep1.Print 或 QuickRep1.Preview, 這樣您就可以得到正確的總頁數 QuickRep1.PageNumber, 如果您需要每個Group的總頁數, 只需在QRGroup1.BeforePrint把QuickRep1.PageNumber存進變數就可以了..
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-06-24 12:53:10 IP:61.67.xxx.xxx 未訂閱
要怎麼寫把QuickRep1.PageNumber存進變數??這樣印每個group的第一頁時就可以得知每個group的總頁數了嗎??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-06-25 12:45:01 IP:210.65.xxx.xxx 未訂閱
Hi minibaby:    Sorry !! 放錯範例檔案,正確的應該是這一個 < href="http://delphi.ktop.com.tw/loadfile.php?TOPICID=16365531&CC=366009">http://delphi.ktop.com.tw/loadfile.php?TOPICID=16365531&CC=366009 做法與 delphiwww 所言大致相同 發表人 -
------
Fishman
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-06-28 16:28:32 IP:61.67.xxx.xxx 未訂閱
Hi,Fishman: 謝謝您這麼熱心提供範例,但是我有一些地方想請教一下,就是我是用一般的query1.close; query1.open; 把我要的sql語法寫在query1裡面 那這樣的話是不是跟您用的clientdataset的有所不同呢??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-06-28 17:15:37 IP:210.65.xxx.xxx 未訂閱
Hi minibaby,    事實上用 ClientDataSet 與 Query 是大小異的,用 ClientDataSet 只是方便範例程式而已,你只要改成
procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Close;
  Query1.ParamByName('參數一').AsString := '參數值一';
  Query1.ParamByName('參數二').AsString := '參數值二';
  Query1.ParamByName('參數三').AsString := '參數值三';
  Query1.Open;
  PageCount1.Clear;
  PageCount := 0;
  CurrentGroup := 0;
  PreviewFlag := False;
  QuickRep1.Prepare;
  PageCount := 0;
  CurrentGroup := 0;
  PageCount2.Assign(PageCount1);
  PreviewFlag := True;
  QuickRep1.Preview;
end;
即可 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-06-29 16:07:06 IP:61.67.xxx.xxx 未訂閱
嗨,fishman: 我照你的範例寫了,可是我每頁都是顯示1/1ㄟ,怎麼會這樣呢??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-06-29 16:55:04 IP:210.65.xxx.xxx 未訂閱
Hi minibaby,    1. 使用 QuickReport 進行 Group 時,SQL Command 最好下 Order By 指令(Order by group 所使用之欄位)    2. 檢查一下程式,看看是否有遺漏的     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
minibaby
一般會員


發表:2
回覆:15
積分:3
註冊:2004-06-08

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-06-30 11:16:21 IP:61.67.xxx.xxx 未訂閱
Hi,Fishman: 我有order by 啦,不過因為我還有一個pagefooter,所以跟groupfooter搞混了啦,真是不好意思喔,我沒注意到< >,已經可以了,謝謝啦< >
系統時間:2024-05-07 13:04:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!