历史版本12 :决策报表自动查询 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

我们在介绍参数应用的时候有介绍到自动查询,其效果是,在参数界面选择好参数之后,无需点击查询按钮,报表主体中会自动查询出过滤结果并展现出来,那么在决策报表中是否也要和参数应用的自动查询一样来实现呢?
不是的,决策报表的自动查询相较于参数应用的自动查询,其实现方式更加简单明了,无需更多的操作,只需要通过控件绑定即可轻轻松松实现该效果。
下面,我们来介绍决策报表自动查询的实现方式。

2. 示例编辑

如下图,选择顶部几个下拉框数据的时候,下方报表块中的数据随之实时变化:
2.1 新建决策报表
新建一张决策报表,往决策报表中拖曳三个标签控件、三个下拉框控件和一个报表块组件,如下图
注:直接拖拽控件到决策报表主体body中,不需要拖拽到参数面板里。
2.2 数据配置
在右侧的数据集面板中新建三个数据集:
订单:select 客户.地区,客户.城市,客户.City,客户.客户ID,客户.公司名称,订单.订单ID,订单.订购日期,订单.发货日期,订单.到货日期,订单.运货商,货主名称,订单明细.产品ID,(订单明细.单价*订单明细.数量) AS 金额 from 客户,S订单 订单 ,S订单明细 订单明细 where 订单.订单ID=订单明细.订单ID and 客户.客户ID=订单.客户ID
ds1:select 城市, 城市||city as 城市city from 客户 where 地区='${地区}'
ds2:SELECT 公司名称 FROM 客户 where 城市='${城市}' and 地区='${地区}'
并修改地区标签后面的下拉框控件名称为地区,城市标签后面下拉框控件名称为城市,客户标签后面下拉框控件名称为客户,其中三个下拉框数据字典配置如下表:
  名称  数据来源  实际值     显示值 
  地区  FRDemo数据库订单表  货主地区  货主地区
  城市  ds1数据集  城市  城市city
  客户  ds2数据集  公司名称  公司名称
注:必须保证下拉框控件名称与参数名称保持一致。
2.3 报表块数据列添加
点击报表块上面的编辑按钮,进入报表块编辑界面,如下图所示,为每个单元格绑定数据列:
 
注:单元格样式可以根据要求自己设置。
数据过滤
由于报表块中的数据与下拉框数据字典绑定的数据并不是来源于同一个数据集,那么他们不会天然形成过滤关系,需要手动为单元格添加过滤条件,选中订单ID所在的A5单元格,双击,打开过滤界面,添加如下图所示过滤条件:
注:公式if($地区 = "", nofilter, $地区)的意思是如果地区参数(这里指控件名称为地区的下拉框)的值为空,那么就不过滤(nofilter是不过滤的意思),不为空,则显示出相应地区的数据。
另:如果报表块中的数据和控件数据字典绑定的数据来源于同一个数据集,则无需再次进行过滤。
2.4 样式修改
此时保存模板,点击预览,可以看到虽然实现了效果,但是由于决策报表的自适应特性,控件置顶显示,排列不美观,此时,可以设置决策报表框架的内边距,上边距设置大点,如下图:
右侧的客户下拉框控件直接靠右边显示,和其他的2个下拉框控件不协调,那么我们是否也可以设置右边距使其不靠右显示呢?不可以的,body的内边距设置时针对整个决策报表的,会作用于该决策报表的所有组件,但是可以往决策报表右侧添加一个空白标签控件,如下图:
2.5 效果查看
保存模板,点击预览,可以看到如上图所示效果。 
已完成模板请参照%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Frm\决策报表自动查询.frm
关键字:决策报表自动查询