FASTREPORT中打印数据的分列显示 |
答題得分者是:zxy666666
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
我的程式如下:
http://delphi.ktop.com.tw/loadfile.php?TOPICID=23193626&CC=518714
我现在做成的打印是字段中有数值的,那么就会排成一列打印下来,我想要的效果是,不管能不能取到数值,我们先把数据库中tb_yplx中的字段内容都制成一个表,但不会只是一列,可以分成二到三列制成一个表,如果查询出来的的结果中有这个值,那么就填入到相应的表格中,如果这个项目在统计时没有出现,也就是没有数值,那么这个项目就空白不填。效果如图:
發表人 - ntjrr 於 2005/06/28 21:10:55
------
我的编程起步于ktop,我将永远支持ktop |
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
您好!提供一個方法:
1. 將tb_yplx增加一個計算金額欄位.
2. 由tb_sf計算出tb_yplx對應項目的總金額(這應該不難做到吧?),並將得出的數據update到tb_yplx中增加的那個計算欄位
3.最後用fastreport直接列印tb_yplx中的兩個字段的內容即可.
4.分二列或三列制作報表,在fastreport中可設置Page或MasterData的屬性Columns設為2或3即可.(這樣可能需控制列印幾筆資料分頁,Ktop已有相關討論主題http://delphi.ktop.com.tw/topic.php?TOPIC_ID=72835) 若有問題,請再提出.
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
引言: 您好!提供一個方法: 1. 將tb_yplx增加一個計算金額欄位. 2. 由tb_sf計算出tb_yplx對應項目的總金額(這應該不難做到吧?),並將得出的數據update到tb_yplx中增加的那個計算欄位这个思路我觉得蛮可行的,但是因为我初学入门,对SQL不太精通,所以不知如何将数据UPDATE到表中 我的ADOQUERY查询为: ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select 项目类型,sum(单项累计) from tb_sf group by 项目类型'); ADOQuery1.Open; 查询结果就为项目类型和总金额记录。在YPLX表中,栏位也是项目类型和总金额,而且YPLX表中的项目类型记录名称和查询结果是一模一样的,不同之处在于:查询结果中的项目类型记录数是小于或等于YPLX表中记录的,查询结果中的总金额数是有数字的,YPLX表中的总金额都是空白的。想要实现的功能就是将查询中出来的项目结果中的金额数填到YPLX表中,要求项目类型字段要相对应,比如西药费金额就填到表中的西药费金额上
------
我的编程起步于ktop,我将永远支持ktop |
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
var Form1: TForm1; Tot_Money:array[0..7] of Real ; //項目金額 Tot_Name:array[0..7] of String ; //項目名稱 implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); var i : Integer ; begin Tot_Name[0] := 'AA' ; //項名稱與報表frxReport中的名稱一一對應 Tot_Name[1] := 'BB' ; Tot_Name[2] := 'CC' ; Tot_Name[3] := 'DD' ; Tot_Name[4] := 'EE' ; Tot_Name[5] := 'FF' ; Tot_Name[6] := 'GG' ; Tot_Name[7] := '其他' ; for i := 0 to 9 do begin Tot_Money[I] := 0 ; end; for i := 0 to 7 do begin Query3.SQL.Clear; // 注:A02-->項目金額欄位名,A01-->項目名稱欄位名 Query3.SQL.Add('select sum(A02) from tb_sf where A01 =:A01'); Query3.ParamByName('A01').AsString := Tot_Name[i] ; Query3.Open; Tot_Money[i] := Query3.Fields[0].AsFloat ; //項目金額 // showmessage(FloatTostr(Tot_Money[i])); end; frxReport1.ShowReport; end; procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent); begin frxReport1.Script.Variables['Tot_Money[0]'] := Tot_Money[0] ; frxReport1.Script.Variables['Tot_Money[1]'] := Tot_Money[1] ; frxReport1.Script.Variables['Tot_Money[2]'] := Tot_Money[2] ; frxReport1.Script.Variables['Tot_Money[3]'] := Tot_Money[3] ; frxReport1.Script.Variables['Tot_Money[4]'] := Tot_Money[4] ; frxReport1.Script.Variables['Tot_Money[5]'] := Tot_Money[5] ; frxReport1.Script.Variables['Tot_Money[6]'] := Tot_Money[6] ; frxReport1.Script.Variables['Tot_Money[7]'] := Tot_Money[7] ; end; |
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
引言:var Form1: TForm1; Tot_Money:array[0..7] of Real ; //項目金額 Tot_Name:array[0..7] of String ; //項目名稱 implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); var i : Integer ; begin //項目名稱與報表frxReport中的名稱一一對應 Tot_Name[0] := 'AA' ; Tot_Name[1] := 'BB' ; Tot_Name[2] := 'CC' ; Tot_Name[3] := 'DD' ; Tot_Name[4] := 'EE' ; Tot_Name[5] := 'FF' ; Tot_Name[6] := 'GG' ; Tot_Name[7] := '其他' ; for i := 0 to 7 do begin Tot_Money[I] := 0 ; end; for i := 0 to 7 do begin Query3.SQL.Clear; // 注:A02-->項目金額欄位名,A01-->項目名稱欄位名 Query3.SQL.Add('select sum(A02) from tb_sf where A01 =:A01'); Query3.ParamByName('A01').AsString := Tot_Name[i] ; Query3.Open; Tot_Money[i] := Query3.Fields[0].AsFloat ; //項目金額 // showmessage(FloatTostr(Tot_Money[i])); end; frxReport1.ShowReport; end; procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent); begin frxReport1.Script.Variables['Tot_Money[0]'] := Tot_Money[0] ; frxReport1.Script.Variables['Tot_Money[1]'] := Tot_Money[1] ; frxReport1.Script.Variables['Tot_Money[2]'] := Tot_Money[2] ; frxReport1.Script.Variables['Tot_Money[3]'] := Tot_Money[3] ; frxReport1.Script.Variables['Tot_Money[4]'] := Tot_Money[4] ; frxReport1.Script.Variables['Tot_Money[5]'] := Tot_Money[5] ; frxReport1.Script.Variables['Tot_Money[6]'] := Tot_Money[6] ; frxReport1.Script.Variables['Tot_Money[7]'] := Tot_Money[7] ; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |