fasterreport的问题——动态创建分组报表时出现的怪现象!(100分)

  • 主题发起人 主题发起人 laozheng
  • 开始时间 开始时间
L

laozheng

Unregistered / Unconfirmed
GUEST, unregistred user!
要得到如下的报表
供应商:杭州天渊 小计:12340。00
商品编号 数量 单价 金额
a0001 1222 10 12220.00
a0002 10 12 120.00
供应商:九江石化 小计:1000。00
商品编号 数量 单价 金额
b0001 900 10 900.00
b0002 10 10 100.00
代码如下(有问题的代码)
procedure frpriew(frreport:tfrreport;frdbdataset:tfrdbdataset;q_detail:tquery;stitle:string);
var i,num,recount,width,width1:integer;
v,v1: TfrView;
b,t: TfrBandView;
w:real;
f:Tfrreport;
checker:string;
page:tfrpage;
begin
width:=0;width1:=0;
if q_detail.IsEmpty then
exit;
frreport.Clear;
frReport.Pages.Clear;
frReport.Pages.Add;
Page := frReport.Pages[0];
frdbdataset.DataSet:=q_detail;
frreport.Dataset:=frdbdataset;
num:=q_detail.FieldCount ;
//创建标题
t:=tfrbandview.Create ;
t.SetBounds(0,100,0,80);
t.BandType:=btreporttitle;
frreport.Pages[0].Objects.add(t);
v1:=tfrmemoview.Create ;
v1.SetBounds(320,100,100,20);
v1.Memo.Add(stitle);
v1.memo.add('jkfjs');
frreport.Pages[0].Objects.add(v1);
//创建分组头 grouphearder
t:=tfrbandview.Create ;t.SetBounds(0,200,0,20);
t.BandType :=btgroupheader;
t.GroupCondition :='[q_detail."'+q_detail.Fields[0].FieldName+'"]';
frreport.Pages[0].objects.add(t);v1:=tfrmemoview.Create ;
v1.FrameTyp :=15;v1.SetBounds(2,200,700,20);v1.FillColor:=rgb(100,200,100);
frreport.Pages[0].objects.add(v1);
for i:=0 to 2do
begin
v1:=tfrmemoview.Create ;
//v1.FrameTyp :=15;
if i=0 then
v1.SetBounds(10,200,q_detail.Fields.DisplayWidth*7,20)
else
begin
width1:=width1+q_detail.Fields[i-1].DisplayWidth*7 ;
//边框
v1.SetBounds(width1+10 , 200,q_detail.Fields.DisplayWidth*7 , 20);
end;
v1.Memo.Add('[q_detail.'''+q_detail.Fields.FieldName+''']' );
frreport.Pages[0].Objects.Add(v1);
end;
//创建分组头
b := TfrBandView.Create;
b.SetBounds(0, 400, 0, 20);
b.BandType := btgroupheader;
frReport.Pages[0].Objects.add(b);
for i:=3 to num-1
do
begin
v := TfrMemoView.Create;
v.FrameTyp:=15;
if i=3 then
v.SetBounds(10,400,q_detail.Fields.DisplayWidth*7,20)
else
begin
width:=width+q_detail.Fields[i-1].DisplayWidth*7 ;
//边框
v.SetBounds(width+10 , 400,q_detail.Fields.DisplayWidth *7 , 20);
end;
v.Memo.Add(q_detail.Fields.FieldName);
v.Prop['Alignment'] := frtaCenter;
//设置文字对其方式
//if i<>(num) then
//设置对其方式
//v.BandAlign:=baleft
//else
//v.BandAlign:=barest;
frreport.Pages[0].Objects.Add(v);
end;
//(创建主表体) create MasterData band
b := TfrBandView.Create;
b.SetBounds(0, 450, 0, 20);
b.BandType := btMasterData;
frreport.Pages[0].Objects.add(b);
width:=0;
for i:=3 to num-1do
begin
v := TfrMemoView.Create;
v.FrameTyp:=15;
if i=3 then
v.SetBounds(10,450,q_detail.Fields.DisplayWidth*7,20) //边框
else
begin
width:=width+q_detail.Fields[i-1].DisplayWidth *7 ;
//边框
v.SetBounds(width+10 , 450,q_detail.Fields.DisplayWidth *7 , 20);
end;
v.Memo.Add('[q_detail."'+q_detail.Fields.FieldName+'"]');
v.Prop['Alignment'] := frtaCenter;
// if i<>(num) then
//v.BandAlign:=baleft
//else
//v.BandAlign:=barest;
frreport.Pages[0].Objects.Add(v);
end;
frreport.DesignReport ;
end;

end.
折行后结果如下
a0001 1222 10 12220.00
a0002 10 12 120.00
b0001 900 10 900.00
b0002 10 10 100.00
请高手指点!
 
你的问题是什么?
是没有“供应商:杭州天渊”等一行吗?
 
谢谢ty123 ,!我已解决了!
 
接受答案了.
 
后退
顶部