简单的说,动态参数就是参数值可以使用表达式的参数。
先看一个应用实例。下面是一个一周内订货信息详情表。
这种查询需求在实际中可能经常会出现,而我们希望只输入一个日期就可以查询出该日期所在周的订货信息表,这样会方便许多。下面来看这个需求的实现过程。
1、
点击新建一个空白报表,保存为4.5.2.rpx,定义两个参数,如下所示:
2、 通过报表 - 数据集菜单,建立两个数据集。
ds1:
SELECT 订单.订购日期,订单.订单ID,订单.货主地区,订单.货主城市,订单.运货商 FROM 订单 WHERE 订单.订购日期 >? AND 订单.订购日期 <?
并添加两个参数定义arg2和arg3。
ds2:
SELECT 运货商.公司名称,运货商.运货商ID FROM 运货商
报表设计如下:
其中,
A2单元格表达式为:=string(arg2)+"到"+string(arg3)+"订货单"
A4单元格表达式为:=ds1.select(货主地区)
B4单元格表达式为:=ds1.货主城市
C4单元格表达式为:=ds1.订单ID
D4单元格表达式为:=ds1.运货商,显示值表达式为ds2.select(公司名称,运货商ID==value())
E4单元格表达式为:= ds1.订购日期,显示格式为:yyyy年MM月dd日
3、 浏览报表,分别输入起始日期和结束日期参数值,即可查出结果报表。
这样就完成了一个按始末日期查询的报表,这个报表在预览的时候需要输入两个参数。但是对于我们查询过去某周的这种需求,这个报表就需要确定该周的始末日期才能查询,对用户来说很不方便,一般人们记不住过去的某个日期所在周的始末日期是啥。
如何才能做到随便输入一个日期,就自动算出这个日期所在周的周报表呢?这个就要使用动态参数了。
4、 动态参数
简单的说,动态参数就是可以使用表达式的参数。在这个报表里,通过报表 - 参数菜单,添加一个新参数arg1,数据类型为日期型,把arg2和arg3两个参数的参数类型都改成动态参数,arg2的值填写pdate@w(arg1),arg3的值填写pdate@we(arg1)。
现在,预览报表,可见弹出的参数设置窗口中只有arg1一个参数了。
随便输入一个日期(注意要yyyy-MM-dd的格式来输入),如2012-07-08,就可以获得本章开头的那张图中的报表。
我们总结一下动态参数的概念,普通参数是直接将输入的参数值传给报表进行运算的,而动态参数是一个表达式,报表运算时会先解析该表达式,然后将表达式计算出的结果作为参数值再传给报表进行运算。
从下面的例子就可以直观的看出普通参数与动态参数的区别。
1、 参数定义
2、 报表定义
3、 预览结果