首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

FASTREPORT能不能做到这种效果?解决办法

2012-03-27 
FASTREPORT能不能做到这种效果?即固定显示4行(或任意行的空格),而不是根据数据的多少而显示多少行,我知道

FASTREPORT能不能做到这种效果?


即固定显示4行(或任意行的空格),而不是根据数据的多少而显示多少行,

我知道有一种叫显示子报表的可以把行数填满,

可是我这个软件不需要填满空白的纸,只需要打四行就够了,而且数据也不会超出四行的,最多就是四行,超出就要另开一张收据了。
请知道的朋友指点一下,谢谢。

[解决办法]
用Child补空行,不过要写点代码

Delphi(Pascal) code
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);var  i: Integer;begin   if (<Line>=MasterData1.DataSet.RecordCount) then  begin    if ((<Line> Mod 4)<>0) then    begin      for i:=1 to 4-(<Line> Mod 4) do        Engine.ShowBand(Child1);    end;  end;end;procedure ColumnFooter1OnBeforePrint(Sender: TfrxComponent);var  i: Integer;begin    if MasterData1.DataSet.RecordCount=0 then      for i:=1 to 4 do        Engine.ShowBand(Child1);end;
[解决办法]
表格全画,不用Fastreport的数据集就可以完成。用数据就不知道如何完成了!
[解决办法]
如果只有4行的话,用这个简单的方法也可以的:
1\把报表设计好,不要放任何band,设置好左右纸张大小、边界等就可以了。
2\在打印时,把整理好的数据,用循环写入报表,再打印就可以了。

Delphi(Pascal) code
self.frxReport1.LoadFromFile('reports\收款收据.fr3');self.adoquery1.first;while not self.adoquery1.eof do beginif self.adoquery1.recno()=1 then beginTfrxMemoView(frxReport1.FindObject('Memo11')).Memo.Text:=self.adoquery1.fieldbyname('名称').asstring;TfrxMemoView(frxReport1.FindObject('Memo12')).Memo.Text:=self.adoquery1.fieldbyname('单位').asstring;......end;if self.adoquery1.recno()=2 then beginTfrxMemoView(frxReport1.FindObject('Memo21')).Memo.Text:=self.adoquery1.fieldbyname('名称').asstring;TfrxMemoView(frxReport1.FindObject('Memo22')).Memo.Text:=self.adoquery1.fieldbyname('单位').asstring;......end;........self.adoquery1.next;end;self.frxReport1.ShowReport;
[解决办法]
只要这个表格画上去
制定数据行数就可以了
不用这么复杂。
就是一个套打的问题吧

热点排行