請問QReport如何顯示單頁中未滿筆數的Detail(顯示空列)? |
答題得分者是:amide
|
asupeduer
初階會員 發表:36 回覆:49 積分:27 註冊:2002-11-08 發送簡訊給我 |
在使用QuickReport時,如果Details裡面只有一兩筆,
但是報表的頁面中,滿頁的筆數是十筆,
如何顯示空著的八筆或九筆呢?
這樣在制式報表上應該是比較合理吧?
但如何做呢?或只要簡單的設定即可? zong前輩給過一個方式︰
1.預留頁首,抬頭,等。
2.把要有的明細表格畫在QuickRep
3.填入Details(不畫表格) 但是光是畫滿QuickRep就很麻煩,難道沒有更好的方法了嗎?
麻煩各位前輩了 //------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
------
//------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
A.QuickReport的Detail裡面先放置10行的QRLabel..
然後用程式一個一個QRLabel給值..
不足十筆的話QRLabel值給空值..
雖然麻煩..但是可行
B.用TempTable...
這樣就不必畫QuickRep了..
引言: 在使用QuickReport時,如果Details裡面只有一兩筆, 但是報表的頁面中,滿頁的筆數是十筆, 如何顯示空著的八筆或九筆呢? 這樣在制式報表上應該是比較合理吧? 但如何做呢?或只要簡單的設定即可? zong前輩給過一個方式︰ 1.預留頁首,抬頭,等。 2.把要有的明細表格畫在QuickRep 3.填入Details(不畫表格) 但是光是畫滿QuickRep就很麻煩,難道沒有更好的方法了嗎? 麻煩各位前輩了 //------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
richcomp
中階會員 發表:18 回覆:66 積分:51 註冊:2002-10-18 發送簡訊給我 |
方案一:
detailband中dataset不要設定,在onneeddata中賦值qrlabel,空格賦空值
方案二:
clientdataset,如範例:
procedure TF_summons.pre_print;
var
l_cou,i:integer;
begin
ClientDataSet1.Close;
ClientDataSet1.CreateDataSet;
adodataset2.First;
while not adodataset2.Eof do
begin
ClientDataSet1.append;
for i:=0 to 15 do
ClientDataSet1.Fields[i].Value:=adodataset2.Fields[i].Value;
adodataset2.next;
end;
l_cou:=ClientDataSet1.RecordCount;
while l_cou mod 6<>0 do
begin
ClientDataSet1.Append;
l_cou:=l_cou 1;
end;
end;
|
amide
一般會員 發表:4 回覆:13 積分:13 註冊:2002-07-11 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
amide
一般會員 發表:4 回覆:13 積分:13 註冊:2002-07-11 發送簡訊給我 |
// 在這裡先確定要印幾筆資料,包括要補足的筆數
procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
var
i, j : Integer;
begin
if( (ADOQuery1.RecordCount mod 10) > 0 ) then
i := ADOQuery1.RecordCount 10 - (ADOQuery1.RecordCount mod 10)
else i := ADOQuery1.RecordCount; for j:=1 to i do
begin
// 設定需要幾行,如果是一頁要10行,可是資料只有5行..
//那就要Add 10筆,不是5筆
QRStringsBand1.Items.Add(IntToStr(QRStringsBand1.Items.Count 1));
end;
end; // 在這裡開始填入資料
procedure TForm2.QRStringsBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if( not ADOQuery1.Eof ) then
begin
QRLabel1.Caption := Trim(ADOQuery1.Fields.Fields[0].AsString);
ADOQuery1.Next;
end else begin
// 補足的行數資料要清空.
QRLabel1.Caption := '';
end;
end; 我試過了...是可以的..你試看看吧!!
|
asupeduer
初階會員 發表:36 回覆:49 積分:27 註冊:2002-11-08 發送簡訊給我 |
感謝amide前輩的幫忙,
這方法不錯,但是總感覺Quick Report不是那麼好用
我想是否該換個工具呢? //------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
------
//------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
btclee
一般會員 發表:0 回覆:1 積分:0 註冊:2008-06-03 發送簡訊給我 |
可以請問一下:
若要連續多頁列印,QRStringsBand1.Items.Add(IntToStr(QRStringsBand1.Items.Count 1)) 這值似乎會持續累加到下一頁,該如何將 QRStringsBand1.Items.Count 的值設初始呢? ===================引 用 amide 文 章=================== for j:=1 to i do begin // 設定需要幾行,如果是一頁要10行,可是資料只有5行.. //那就要Add 10筆,不是5筆 QRStringsBand1.Items.Add(IntToStr(QRStringsBand1.Items.Count 1)); end; end;
編輯記錄
btclee 重新編輯於 2008-06-04 08:33:41, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |