参数概述
在我们设计一张报表的时候,很多时候并不需要把数据库中的所有数据都展现出来,常常需要根据一些条件来过滤出我们想要的数据。这就需要通过参数的形式控制报表中的数据。
例如希望制作一张“日订单统计报表”,当希望生成一张“日订单统计报表”时,需要向报表传递日期参数,报表根据接收到的日期参数,生成该日的“日订单统计报表”。 参数可以在数据集和表达式中被引用。
参数定义
点击 【编辑】-【参数和宏】,可进入参数编辑界面。
可为报表添加多个参数,设置报表参数的名称、描述、数据类型、参数类型、值等属性;在参数列表中选择一个参数,还可以通过相应按钮进行参数的删除、上移/下移。参数计算的顺序为从上到下,所以后面的参数可以引用前面参数的值,而前面参数的值不能引用其后面参数的值。
参数编辑界面如下图所示:
- 参数名
参数的名称是唯一区别各个参数的依据。可以根据需要自己编辑,数据集和表达式中引用参数时,用的就是它的名称。比如:starttime
- 参数描述
描述可以使用默认的,也可以根据需要自己编辑,主要用来标识该参数的含义。比如:开始时间
- 数据类型
参数是一个变量,因此有数据类型属性,支持常用的数据类型。
需要注意的是:系统会根据所设置的数据类型,对输入的内容进行强制转换。
- 参数类型
参数的类型有普通参数、动态参数和会话变量三种。
有关参数类型和区别的详细说明可参见文档
- 值
对于普通参数,这个值将作为默认值,若外部未传入该参数,则以默认值进行后面的动作。未设置时认为是空值,默认值将传入null。
对于动态参数,这里应该设置动态参数的表达式。未设置时认为是空表达式,其运算结果将为null。设置了表达式则将进行计算得到的结果传入。
对于会话变量,默认值可通过下拉列表选择,包括sys_UserID,sys_Orgs_ForDAUC和 sys_Roles_ForDAUC。
数据集中使用参数
建立数据集时增加的参数,可以让使用该数据集制作的报表,按照参数的值起到筛选作用。
在SQL检索数据集中,【检索条件设置】tab页中可以进行参数设置,如下图所示:
设置好数据集参数后,使用该参数对数据集字段进行数据过滤。即在检索条件中的【条件值或参数】处选择使用参数来向检索条件传递条件值,设置后将以【@参数名】的形式显示在条件值输入框中,如下图:
在复杂SQL数据集中,参数以“?XXX”的形式在SQL语句中进行书写来添加。例如一个查询需求为:从T表中查询a、b字段,并以xxx、yyy、zzz字段作为过滤条件(其中xxx固定取10,yyy和zzz接受外部传入的值)。
这种情况下就可以使用参数,具体做法为将数据集的SQL语句定义为:SELECT a,b FROM T WHERE xxx=10 AND yyy=?y AND zzz=?z
然后可以在参数页面进行参数的具体属性设置,进而实现数据集可分别接受y和z对应的参数值实现过滤。
对于存储过程、自定义等其它类型的数据集,可以直接在数据集定义界面中通过增加按钮来添加数据集参数。例如下图所示的自定义类型数据集:
表达式中使用参数
直接在表达式中引用参数名,把参数作为变量来使用,如果参数名和字段名或其他名称相重复,那么在参数名前加@符号,如 @参数名
举例:=”从 “+str(@starttime)+” 到 “+str(@endtime)