請問如何製作雙報表?! |
|
linand
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 請問站長大人:: 你們都如何用qreport 製做雙報表的 ?? 如下:: 比如table中有d1,d2,d3三個欄位, 要在報表中顯示如下:: d1,d2,d3,d1,d2,d3 其中左右彼此不能重複,比如左邊顯示單號,右邊即是雙號??? lin and1.不要採用Datasource連結QuickRep 2.將資料先放在Array中,先排好二維陣列,也就是要顯示的方式 3.在QuickRep的NeedData事件中將陣列填入QuickRep中的QRLabel 這樣說明,了嗎? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
scottliou
版主 ![]() ![]() 發表:16 回覆:56 積分:47 註冊:2002-03-14 發送簡訊給我 |
我的作法是比較複雜 1.Create temp Table
var
table:TTable;
begin
with table do begin
databasename:=.... //設定為異動檔路徑
tablename:=....//讀取異動檔名
with fielddefs do begin
clear;
add('d1L',ftstring,10);
add('d2L',ftstring,10);
add('d3L',ftstring,10);
add('d1R',ftstring,10);
add('d2R',ftstring,10);
add('d3R',ftstring,10);
end;
with indexdefs do .......
createtable;
table.open;
//readData 讀入資料....
with query do begin
first;
while not eof do begin
if recordcount mod 2 = 1 then
begin
table.append;
table.fieldbyname('d1L').asstring:=....;
...
end
else
begin
table.fieldbyname('d1R').asstring:=...;
....
post;
end;
next;
end;
end;
if state<>dsBrowse then
post;
end;
try
QuickRep1.preview; // or print
finaly
table.close;
delete(....)//異動檔
end;
end; ~~~~~~~~~~~~~~~~
有夢想最美......
------
~~~~~~~~~~~~~~~~ 有夢想最美...... |
peipei36
一般會員 ![]() ![]() 發表:8 回覆:51 積分:16 註冊:2002-03-13 發送簡訊給我 |
好像也可以直接把兩組d1,d2,d3都擺TQRLabel
然後在DetailBand1BeforePrint寫程式碼...
像這樣(要先select出要的順序)..
QRLabel1.Caption := Query1.Fields[0].AsString; QRLabel2.Caption := Query1.Fields[1].AsString; QRLabel3.Caption := Query1.Fields[2].AsString; Query1.Next; if not Query1.IsEmpty then begin QRLabel4.Caption := Query1.Fields[0].AsString; QRLabel5.Caption := Query1.Fields[1].AsString; QRLabel6.Caption := Query1.Fields[2].AsString; end;不曉得這樣寫會不會比較不好?! |
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 好像也可以直接把兩組d1,d2,d3都擺TQRLabel 然後在DetailBand1BeforePrint寫程式碼... 像這樣(要先select出要的順序)..這樣是不錯,但是當資料中有跳號的情形,此法就不方便用, 所以我才會用Array: 1.不用多佔Database空間 2.用記憶體速度較快 3.Array可以自由安排,兩欄三欄都很方便 ~~~Delphi K.Top討論區站長~~~QRLabel1.Caption := Query1.Fields[0].AsString; QRLabel2.Caption := Query1.Fields[1].AsString; QRLabel3.Caption := Query1.Fields[2].AsString; Query1.Next; if not Query1.IsEmpty then begin QRLabel4.Caption := Query1.Fields[0].AsString; QRLabel5.Caption := Query1.Fields[1].AsString; QRLabel6.Caption := Query1.Fields[2].AsString; end;不曉得這樣寫會不會比較不好?!
------
~~~Delphi K.Top討論區站長~~~ |
peipei36
一般會員 ![]() ![]() 發表:8 回覆:51 積分:16 註冊:2002-03-13 發送簡訊給我 |
對哄~~跳號就skk了...^^~
如果左邊與右邊的東西以select分得開的話(或當初可直接產生
到兩個temp table)..
也可以用兩個Query,一邊管一個,不過,要以RecordCount多的為主導(自動移Next)..
例如: if Query1.RecordCount > Query2.RecordCount..
=> QuickRep1及TQBText等自動連結的元件都設給它..
Query2那邊則以TQRLabel自己寫入Caption...
這樣寫的話,可嗎?! 對了,請教站長,以記憶體Array處理時,
當資料量大時(又大到什麼樣的程度?!),您怎麼處理?!thx~
|
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
linand
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2002-03-13 發送簡訊給我 |
|
chenyk
高階會員 ![]() ![]() ![]() ![]() 發表:14 回覆:95 積分:171 註冊:2002-07-08 發送簡訊給我 |
請教站長大大 可以對Array的方式做個範例嗎? 我試不出來ㄋㄟ
下面是我測試的Code
var
a_Buf : array of array of String;
... procedure Tfrm_Qrp.Qrp_BaseNeedData(...);
var
i,j : Integer;
begin
MoreData := true;
for i:=0 to High(a_Buf) do
for j:=0 to High(a_Buf[i]) do
QrLabel1.Caption := a_Bug[i,j]; MoreData := false;
end; 以上的程式,a_Buf內有多筆資料,但預覽石只顯示一行,不知道是哪作錯了? 謝謝
|
hahalin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 請教站長大大 可以對Array的方式做個範例嗎? 我試不出來ㄋㄟ 下面是我測試的Code var a_Buf : array of array of String; ... procedure Tfrm_Qrp.Qrp_BaseNeedData(...); var i,j : Integer; begin MoreData := true; for i:=0 to High(a_Buf) do for j:=0 to High(a_Buf[i]) do QrLabel1.Caption := a_Bug[i,j]; MoreData := false; end; 以上的程式,a_Buf內有多筆資料,但預覽石只顯示一行,不知道是哪作錯了? 謝謝OnNeedData這個函式是一個迴圈呼叫一次的 將var i,j : Integer;放到外部變數 一次填上一行的資料 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
chenyk
高階會員 ![]() ![]() ![]() ![]() 發表:14 回覆:95 積分:171 註冊:2002-07-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |