知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 快逸报表对横向扩展的报表强制换行

快逸报表对横向扩展的报表强制换行

衡量一个软件工具的好坏,就是要看他是否能满足用户的各种需求,快逸报表在应对各种需求的时候,表现出来良好的应变能力。本文就以一个客户的实际需求来展示一下快逸的随机应变。客户需求:行数较少的报表横向扩展时在web页面会展示出一条又长又窄的报表,样式如下图:

快逸报表对横向扩展的强制换行

这样不但不美观,而且也浪费了大量的空间,能否让报表在页面上分多行显示而不是无限的横向延伸下去呢?下面就来用实例解决这个需求。

解决这个问题的总体思路是:首先将这个报表横向扩展复杂报表设计" target="_blank" class="quieeLink1">设计出来,然后在那个扩展列的上方写to()函数控制扩展的列数,即扩展几列后换行,同时,在扩展的第一行写to()函数得到一共可以换行的次数。

这个报表模板的设计如下图:

快逸报表对横向扩展的强制换行

使用demo数据源,建立数据集语句如下:

ds1: SELECT 雇员.雇员ID,雇员.姓氏,雇员.名字,雇员.地址,雇员.家庭电话 FROM 雇员

A1:=ds1.count(),用于计算此数据集内的数据个数。

B1:=int(A1)/5+1,用于计算一共需要扩展的行数,其中”5″是每行的数据列数。

A4:=to(1,B1),作为强制分行的扩展基础。

B4:=(A4-1)*5,是每行的基数,

D3:=to(1,5),与B1统一,控制显示为5列数据

D4:=ds1.select1(雇员ID, 雇员ID ==D3+B4) ,其中D3+B4分别递增,达到与每个雇员ID进行匹配的目的,这里需要着重强调的是数据集里需要”雇员ID”是连续递增的数字,来实现换行后的匹配。在此例中”雇员ID” 是初始值为1的有序递增数据,如果是其它情况,读者可以自己根据具体情况求出这个”雇员ID”或者在数据库中添加一列有序的数字来实现。

D5:=ds1.select1(姓氏,雇员ID==D3+B4),把D5的上主格设置为D4

D6:=ds1.select1(名字, 雇员ID ==D3+B4),

D7:= D5+D6,

D8:=ds1.select1(地址, 雇员ID ==D3+B4)

D9:=ds1.select1(家庭电话, 雇员ID ==D3+B4)

C11:=”第”+A4+”行/共”+int(B1)+”行”

将C5,C6,C7,C8,C9,C10 ,C11,C12的左主格都设置为B4。

将1,3,5,6行设为隐藏行,1,2列设置为隐藏列。

这样报表设计就完成了,发布报表,在web中预览效果为

快逸报表对横向扩展的强制换行

从上图可以看出,在这个报表中实现了固定列数的换行,达到了客户的需求,而且这个换行效果在导出excel的时候同样有效,显示如下图:

快逸报表对横向扩展的强制换行

以上的例子中,固定的将列数设置为5,这个设置是可以变动的,可以将这个数设置为参数,供用户选择显示多少列后换行,以实现用户多样的需求。

本文标签:
发布日期:2009/11/24
本文分类: 设计基础