利用单元格属性动态控制统计图的宽度
快逸报表柱形图和堆积图的单个柱体宽度是根据单元格的宽窄和图形的数量进行拉伸显示的,发布到web页面以后,如果根据参数模板查询出结果展现图形的话,会根据数据的不同,图像有宽有窄,显示的很不美观。本文就来介绍一下如何利用单元格的属性动态控制统计图图形效果。
思路分析:统计图的图形宽度是根据单元格宽窄和数据多少进行改变的,数据量的多少不能硬性规定,所以需要设置单元格宽窄来解决问题。
第一步:展现未经改动的报表统计图效果
打开快逸报表中基础统计图/堆积柱形图.raq这张报表,先为该表添加一个参数模板命名为:堆积柱形图_arg.raq如下图,为该模板添加一个数据集ds1,sql语句为:SELECT TITLE.TITLENAME FROM TITLE,然后在C2单元格中设置编辑风格为下拉数据集,并勾选”允许多选”,变量名设为base。
在堆积柱形图.raq报表中选择配置-参数,添加一个参数,参数名为base,参数类型为字符串组。修改数据集,在数据集添加查询过滤条件的sql语句,结果为:SELECT EMPLOYEE.EMPID,DEGREE.NAME,TITLE.TITLENAME FROM EMPLOYEE,DEGREE,TITLE WHERE TITLE.ID = EMPLOYEE.TITLE and EMPLOYEE.DEGREE = DEGREE.ID and TITLE.TITLENAME in (?),在数据集中添加一个参数,参数名称为base,参数类型同样为字符串组。
先来展现下默认情况的统计图效果:
下图为只选择两条数据时的效果:
由以上两图效果对比可见,统计图的图形明显变粗了。
第二步:修改报表使统计图效果一致
修改报表如下图:A1B1C1单元格为报表表头,A2B2单元格为报表数据的分组函数,C2单元格使用count函数对数据进行统计,A4单元格为统计图,在第四行后添加一行空白行,在A5单元格加入=count(A2{})的表达式,这里A5就计算出了需要展现的列数。选中ABC三列,在列属性-宽度的表达式中加入A5*10+20。这里的表达式需要自行调试,因为根据数据的不同需要的列宽也不一样,需要用户自行设置以一些常量通过四则运算来达到最合适的效果。比如当一列数据时,表达式的值等于1*10+20=30,两列值等于40,三列值等于50,以此类推,达到每增加一个统计图图柱列宽变化的大小都与图形成正比的增长。
再来看下修改后两条数据的效果图,统计图图柱明显根据数据量的多少调整了:
这样就可以实现根据数列的多少来动态增减列宽,从而达到统计图图形美观的效果。此方法同样适用于横向的统计图,如堆积条形图等。只需把列宽的设定改成对行高的设定。