现在的位置: 首页 > 综合 > 正文

vb datareport 换页

2012年11月27日 ⁄ 综合 ⁄ 共 1112字 ⁄ 字号 评论关闭

以下内容原发于badu知道,现转到此保存以备忘。

现状:在vb程序里有个datareport模板。在page header这个session里有line画成的表格,表格里有一些label用来显示数据。目前这个rpt只会有一页数据(即数据集只有一行),不会有多页数据。
需求:有个label在表格的中间,它可能会有很多内容,当内容很多的时候,需要它能够自动增加高度(往下延伸)以显示所有内容,并且如果一页显示不完,可以自动延伸到下一页。
1.我试过把label的属性CanGrow设置为true,报错“Sections do not fit vertically on the page”
2.我试过把page header这个session的属性keep togeher 设置为true或false,也是报错“Sections do not fit vertically on the page”
我想实现的概括起来就是rpt里头一页显示不完的内容要自动换页显示,哪位朋友对datareport熟悉的帮帮忙,谢谢。如果无法实现,是否有其他的替代方法呢?

补充:并不是有多条数据,然后每页显示多少条。而是只有一条数据,只是这条数据里某列可能超多内容,一页显示不完整需要下一页延伸显示。
 
问题补充:遗憾的看到没人答复,可能是我提问时对datareport不熟悉,描述的不够准确。最终自己摸索了半天实现了,现写出来给有需要的人参考。
大概方法是:这个label的来源内容是由一个列表的每一行组织成str的。
一:把此label上面的其他标签和表格线都放置与report session中,这样这些内容就只在第一页显示了。
二:把此label改为txtbox,放在detail session中,指定一个数据源的表(可以用临时数据源或access,我这程序模块本身就有access数据源以及专门存放临时数据的临时表);
三:输出数据时把列表的每一行写入这个数据表,然后在预览时读取数据(读取完后记得清空临时表哦),这样如果有多条数据就会自动换行,如果有超过一页的就会自动换页。
四:把此label下面的其他标签和表格线放置与report footer里,这样即使有多页,这些内容也只会在最后一页显示。
 
个人理解:detail session只要指定了数据源有多条数据,本身就是会自动分页了,如果其中某一条数据横跨了2页,只需要把detail session的keep together设置为false即可。
还有些遗留问题没法子解决的。
如果把txtbox的CanGrow设置为true,则当某条txtbox的记录超过预先画好的范围,则txtbox会自动延伸,但是用于容纳txtbox的表格线无法自动延伸。

抱歉!评论已关闭.