动态参数
普通参数
报表样例
通过本示例,可以了解如何在动态参数的值表达式中应用普通参数。
制作如下图所示的报表:
报表特点
报表查询时能够输入一个查询日期,然后基于该日期值自动计算出其所在周的起始日与结束日,报表标题下方可显示出这一周的日期区间。
报表根据自动计算出的起始日与结束日,显示出这一周内的所有订单数据。
制作方法
第一步 定义带参数数据集
报表中的数据来自产品中自带的演示数据表“演示_订单表”,采用sql检索数据集并对字段“订购日期”设置了应用参数进行数据过滤的检索条件。
1)点击【添加数据集】按钮,在新建数据集页面选择【SQL检索】,找到数据表“演示_订单表”,点击【选择】。
2)选择需要的字段,也可全选。
3)切换至【检索条件设置】tab页,点击参数设置后的【增加】按钮,添加两个参数 “beginDate”和“endDate”。
点击检索条件后的【增加】按钮,添加过滤条件 订购日期 在 @beginDate 和 @endDate 之间(包含),点击【确定】按钮回到【选择表与字段】tab页。
4)点击【下一步】查看SQL语法。
5)点击【确定】按钮,将数据集保存为“订单表”。
第二步 设置参数
打开菜单栏的【编辑】—【参数和宏】页面,先新增一个名称为“inputDate”的日期型普通参数,用于接收传入的查询日期,然后将自动添加到参数页面的“beginDate”、“endDate”两个参数的类型修改为“动态参数”,并设置默认值表达式。
注意:参数计算的顺序为从上到下,所以后面的参数可以引用前面参数的值,而前面参数的值不能引用其后面参数的值。
第三步 绘制表样
绘制报表基本结构:
第四步 定义单元格表达式
1)快捷公式选择【列表】,将“订单ID”字段拖拽至A4单元格;选择【取值】 ,分别将“客户”、“订购日期”、“货主地区”、“货主城市”、“收货人”分别拖拽至B4、C4、D4、E4、F4单元格。
拖拽完成后,自动在单元格生成下面的表达式:
A4单元格:=订单信息.Select(订单ID)
B4单元格:=订单信息.客户ID
C4单元格:=订单信息.订购日期
D4单元格:=订单信息.货主地区
E4单元格:=订单信息.货主城市
F4单元格:=订单信息.收货人
2)在D2单元格输入表达式:=@beginDate
,在F2单元格输入表达式:=@endDate
。
第五步 设置通用查询
打开【通用查询】页面,勾选inputDate参数作为查询条件。
点击查询条件后的【配置】按钮,打开条件配置页面,设置编辑风格为【下拉日历】。
点击【保存配置】按钮,保存查询条件设置。
第五步 保存预览
点击【保存】按钮对报表模板进行保存,在保存页面设置报表的资源名称、保存路径 和文件名称,点击【确定】,此报表模板保存资源名称为【一周订单查询表】。
点击【预览】按钮对报表进行查看,点击预览按钮时也会对报表进行保存。
在预览界面的查询条件处输入日期,点击查询按钮即可查出这一周的订单,如下图:
功能点说明
动态参数的默认参数值是作为一个表达式,报表计算时会先将表达式计算然后再将计算结果作为参数值传给报表使用。表达式中可以应用函数,可以引用其它参数的值。引用参数时使用符号@+参数名的形式,例如:@arg
例如上面的示例报表中,动态参数“beginDate”的默认值表达式为:weekBegin(@inputDate)。weekBegin()是日期计算函数,其作用是可以根据传入的日期计算出该日期所在周的第一天的日期,每周的第一天按周日开始。当报表计算时,首先会用普通参数“inputDate”的值替换掉表达式中对该参数的引用部分,然后再进行表达式的后续计算。例如当在报表中输入查询日期“1997-07-01”然后点击查询后,动态参数“beginDate”的值表达式引用普通参数inputDate的值变为:weekBegin(“1997-07-01”),接着再继续执行表达式的函数运算,最终返回日期“1997-06-29”作为参数beginDate的值,供报表进行使用。动态参数“endDate”与上面同理。