横向扩展报表强制换行的设计方法

 报表设计器不仅提供给客户各种设计报表的功能与途径,同时也具备了很多应变式的特性与设计方式,以最大限度的满足用户在设计报表时所能遇到的各类需求。本文就以一个实际需求来展示快逸应用时的灵活应变性。需求描述:横向扩展的报表实现分多行展示。

 例如下图中的报表预览图,为一个横向扩展的报表,从图中可看出报表含有五个字段,且图上没有截下报表的所有表格,报表右侧还有表格没有显现。由于数据量较大,导致报表预览时形成一个横向的狭长的报表,预览效果不易观察数据,也不尽美观。

 

解决思路:报表的扩展类型为横向扩展时,在报表模板上加上控制扩展列数的函数,即扩展几列后换行;同时在报表模板上显示换行的次数。

报表模板如下图所示。

 

报表模板采用设计器的演示数据集:demo_em(演示_雇员表)

单元格设置如下:

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

B1:=int(A1)/5+1,用于计算一共需要扩展的行数,其中”5″是每行的数据列数。A4:=to(1,B1),作为强制分行的扩展基础。

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

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

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

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

D6:= demo_em.select1(地址, 雇员ID ==D3+B4)。

D7:= demo_em.select1(家庭电话, 雇员ID ==D3+B4)。

D9:=”第”+A4+”行/共”+int(B1)+ “行”。

将C5,C6,C7,C8,C9,C10的左主格都设置为B4。将1,3,8行设为隐藏行,1,2列设置为隐藏列。报表设计完成,发布报表,预览效果如下图所示。

 

本文标签: