选中一行数据生成相应的统计图
客户需求:报表展现后选中一行数据或者一行数据中的某一个单元格,则弹出一个以此行数据为依据的柱状图,当切换到另一行数据时,则统计图相应变化。
需求分析:客户的这个需求有两个与传统的统计图展现模式不同的地方:
- 统计图不是直接出现在报表中,而是通过鼠标点击弹出
- 统计图内容不是固定不变,而是根据所点击的内容动态变化
大致思路:
- 鼠标点击数据行或者单元格弹出统计图可以通过超链接实现
- 统计图内容动态变化可以用过超链接把所点击单元格的数据作为参数传递到统计图报表中,报表数据因为参数不同而变化,统计图因为报表数据不同而变化
实现步骤:
第一步:设计主报表
使用demo数据源,建立数据集ds1,其sql语句为:SELECT 订单.运货商,订单.货主地区,订单.运货费 FROM 订单
通过数据集设计交叉报表如下图:
各单元格表达式分别为:
A3:=ds1.Group(运货商,false)
B1:=ds1.Group(货主地区,false)
B3:=ds1.Sum(运货费)
主报表大致设计完毕,保存为chaolj.raq。
第二步:设计统计图报表
统计图报表在主报表的基础上设计,打开主报表,然后另存为chaolj2.raq。在这个报表上增加统计图并作一定的修改,如下图:
修改1:追加一行统计图,并按照上图的方法设置统计图
修改2:在报表中增加参数arg1,因为报表例子中的运货商字段类型为数值,参数类型也设为数值,如下图:
修改3:在A3单元格中增加接受参数的语句:=ds1.Group(运货商,,运货商==@arg1)
第三步:在主报表上设置超链接
统计图报表设计好以后就可以在主报表上设计超链接来弹出统计图了,超链接设置界面如图:
超链接表达式为:”reportJsp/showReport.jsp?raq=/chaolj2.raq&arg1=”+A3
意思是使用showReport.jsp打开新报表chaolj2.raq,并且把单元格A3的值作为参数传给新报表。
就这样,通过上面的简单的三步就把用户的需求解决了。