润乾报表对横向扩展强制换行的设计方法
润乾报表设计器不仅提供给客户各种设计报表的功能与途径,同时也具备了很多应变式的特性与设计方式,以最大限度的满足用户在设计报表时所能遇到的各类需求。本文就以一个实际需求来展示润乾应用时的灵活应变性。需求描述:横向扩展的报表实现分多行展示。
例如下图中的报表预览图,为一个横向扩展的报表,从图中可看出报表含有五个字段,且图上没有截下报表的所有表格,报表右侧还有表格没有显现。由于数据量较大,导致报表预览时形成一个横向的狭长的报表,预览效果不易观察数据,也不尽美观。
解决思路:报表的扩展类型为横向扩展时,在报表模板上加上控制扩展列数的函数,即扩展几列后换行;同时在报表模板上显示换行的次数。
报表模板如下图所示。
报表模板的数据集配置如下:
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列设置为隐藏列。报表设计完成,发布报表,预览效果如下图所示。
从上图可以看出,在这个报表中实现了固定列数的换行,达到了客户的需求,而且这个换行效果在导出excel的时候同样有效,显示如下图。
以上的例子中,将报表预览显示列数规定为5列,具体设置根据用户的需要而定,还可以将这个数设置为参数,供用户自行输入来选择。