以文本方式查看主题 - 搭建论坛 (http://bbs.diylsoft.com:8118/starforum/index.asp) -- 数据库交流 (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=6) ---- [下载]新增专业版学习实例——打印固定行数报表 (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&id=1505) |
-- 作者:admin -- 发布时间:2003-10-28 9:33:35 -- [下载]新增专业版学习实例——打印固定行数报表 引力波在前些日子增经发过,如何打印固定行数报表的贴子,该功能实现起来有点复杂。现把开发思路和注意事项在此说明。 思路: 1、建立一个临时表 2、把原表数据复制到临时表后,对记录数取模,然后补上相应的空行 3、取相应行记录后,打上选择标记,然后进行过滤,打印 开发过程: 1、在原表一定要有“编号”和“打印选择”两个字段,其中编号字段为“关键字”。在本例中“打印选择”字段由“标记”字段替代。原表名称为“求职信息” 2、根据原表,复制一个表结构相同,不含数据的临时表。在本例中,临时表名称为“临时求职信息”。 3、确定打印报表的固定行数。在本例中,固定行数为“10”,即一页报表显示10行。由于“求职信息”表的记录是不断变化的,因此每一次打印的页数都有可能是不定的。在本例中,“求职信息”的总记录数为“97”,这样在打印打报表时,至少要打印十页。为了使最后一页,不至于打印“7”条记录,因此要向表中补上3个空行。使之变成100条记录。这也就是要求表结构中一定要含有“编号”字段的原因。 4、在完成了第三步后,“临时求职信息”中,应该有100条记录,其中97条记录,来源于原表,3条空记录是手工追加的。这100条记录与10相除,就是要打印的表格数。 5、确定打印范围。当打印第一个表格的时候,把前10条记录打上“打印选择”标记,然后利用“标记”字段进行过滤。然后,第二次打印时,再取11条到20条记录打印,依此类推。 注意事项: 1、在对打印范围进行选择时,记录循环(选择)的循环方向属性一定是“指定范围”,而不能用默认的“从上到下”。 2、在得到“临时求职信息”的记录总数之前,一定要关闭临时表,再打开。否则,由于,在对临时表动态操作时,可能数据并没有真正写到临时表中,而造成得到记录总数不对。 3、必须判断是否追加空记录。如果原表记录正好是100条,在按实例所设情况下,将出现追加10条空记录现象。因此追加的空记录条数要与10进行比较,只有小于,才追加。 4、注意ADO命令的用法。 实例下载:打印固定行数报表 |
-- 作者:引力波 -- 发布时间:2003-10-28 11:57:40 -- 《打印固定行数报表》这个实例虽然是个变通的办法,但完全可以满足要求,而且其中有几处的设计思路很值得学习,算得上是个设计精品,吃透后很是收益。 |
-- 作者:阳光 -- 发布时间:2003-10-28 14:57:15 -- 是啊,很受企发呀!里面涉及到相当多的开发技巧。希望多出这样的实例和经验介绍。 |
-- 作者:admin -- 发布时间:2003-10-29 14:47:16 -- 《打印固定行数报表》这个实例虽然是个变通的办法,但完全可以满足要求,
并不是变通的,因为在常规的报表中,有时需要对报表的每一页进行小计,实际上,只能用这种办法。
如果不考虑“小计”的话,那么通过调整“报表区域”的高度,也可以实现打印固定行数报表。假设报表有“页眉区、内容区、页脚区”。同样如第一楼中思路说的那样,把原表数据复制到临时表,然后追加相应的空记录。接下来,调整报表各个区域的宽度,使之正好打下十条数据。
|
-- 作者:引力波 -- 发布时间:2003-10-29 22:04:58 -- [讨论]:也许是我的理解问题,如果不是变通的办法,按理应该是报表面板(或者相应的构件)应该具有自动识别的功能,假如出现填充的行数总高度不足设定的高度,就会自动补充,而不是用这些服务程序来弥补不足。 |
-- 作者:admin -- 发布时间:2003-10-30 8:51:22 -- 按理应该是报表面板(或者相应的构件)应该具有自动识别的功能,假如出现填充的行数总高度不足设定的高度,就会自动补充,
按目前构件形式,你的上述想法不太现实。实际上,通过调整页眉区、页脚区、内容区宽度是最简便的办法。
|