报表知识库
我要提问

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

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

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

原始预览.png

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

报表模板如下图所示。

报表模板.png

报表模板的数据集配置如下:

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列设置为隐藏列。报表设计完成,发布报表,预览效果如下图所示。

预览.png

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

excel效果.png

以上的例子中,将报表预览显示列数规定为5列,具体设置根据用户的需要而定,还可以将这个数设置为参数,供用户自行输入来选择。