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