倾家荡产求解FR的子报表打印问题!!(129分)

  • 主题发起人 主题发起人 wordpress
  • 开始时间 开始时间
W

wordpress

Unregistered / Unconfirmed
GUEST, unregistred user!
环境:delphi 7 fastreport3.15
现有一张主表,打印为一张A3张大小,中间分布着很多的子报表,这些子报表的大小都有规定好。(因不好说明,附图一张:http://static.flickr.com/54/143791082_9705cec267_o.jpg )
现问题如下:
因为子报表里是一组这样排列的数据:
标题1 标题2 标题3
内容1 内容2 内容3
... ... ...
一般在主表里都规定好了子报表的高度为四行左右的高度,下面会接着别的内容。但因为有时内容可能会有五行,六行,多出的就不给打印出来。否则就会重叠到下面的内容上。
想实现如下功能:当子报表的行数超出规定的行数(如4行)时就把超出的部分用附页的形式打印在后面的附页上。
请求达人帮忙~附上全部家当:129分!
 
子报表位置大小已经定好,那么子报表的行数就已知,每次在打印前,先监测每个子报表记录的行数,如果有超出的记录一下,每个子报表的sql语句使用 select top 能够容纳的行数 字段1,字段2,... from 表名
这样子报表不会超出位置,然后在附页打印超出的字报表
 
监测子报表记录的行数如何写?超出的子报表又怎么定位呢?麻烦能不能说得详细点,我对FR还是不太了解。
 
各位大大SOS
 
我用如下代码判断了如果子表中超出四行就新打一页
var
PageLine: integer;
//当前行
PageMaxRow: integer=4;
//设定每页行数,如4行每页
procedure MasterData2OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Engine.newpage;
end;
可新这个NEWPAGE不是我想要的,打出来是A3的纸,该怎么写才能让多出来的记录打成定制的形式页呢?
 
检测子报表行数: 你的行数是否等于记录条数
 
to:myzh2579
行数固定,而记录条数不确定,有时小于行数有时大于行数,就是想在记录条数多于行数时能让多出的记录打在报表的附页上,但如何写代码实现呢。。。。。附页不可能就是简单的newpage就好的。
 
没人帮帮我吗?马上周末了,要惨了
 
sorry,这两天没有上网,如果你的行数等于你的记录数那就好办,你查询子报表的数据时使
打印报表前 先用 select count(*) from 表名 察看每个子报表的记录数,如果超出记录一下此子报表,然后使用 select top 能够容纳的行数 字段1,字段2,... from 表名 order by 主键字段
这样保证不超出子报表位置
最后再从数据库取出没有打印的数据再打印()
 
to:myzh2579
具体怎么做还是不太明白,能加个QQ聊吗?我的是7026216。
昨天出差没上线,这个问题这周再搞不定麻烦就真的大了。
 
sorry 我没有qq mail zzd_qd@126.com
我近期也在做自定义报表,报表上的元素都是程序生成的,不过我使用的是reportmachine 不过跟fastReport差不多
不过我的方法肯定可行,象你的newpage后可以设置page大小
可以把你的具体内容发邮件吧,我也不是经常在线
 
感谢myzh2579,虽然还是因为太急的原因没有邮件联系,不过还是感谢指点。
最后我是用了一个比较苯的方法实现了这个功能,到此结贴放分。
 
后退
顶部