目录

动态参数

简单的说,动态参数就是可以使用表达式的参数。普通参数的参数值直接由外部传入,而动态参数的参数值则是通过一个表达式运算而来。

一、报表实例

下面是一个一周内订货信息详情表。

 

这种查询需求在实际应用中可能会经常出现,我们希望只输入一个日期,就可以查询出该日期所在周的订货信息表,这样会方便许多。下面来看这个需求的实现过程。

二、设计过程

第1步:新建报表

第2步:定义数据集

demo_订货信息: select 订购日期, 订单ID, 货主地区, 货主城市, 运货商ID from DEMO_ORDERS where  订购日期 >?begintime  AND  订购日期 <?endtime

这里新建的是复杂SQL数据集

第2步:查看参数,切换到【参数】标签,可看到系统自动获取到了两个参数


在复杂报表设计器中引用数据集demo_订货信息和demo_运货商。

第3步:编辑报表

 

1. 数据集参数begintime和endtime自动添加到报表参数中:

2. A2单元格表达式为:=str(begintime)+"到"+str(endtime)+"订货单"

3. A4单元格表达式为:=demo_订货信息.select(货主地区)

4. B4单元格表达式为:=demo_订货信息.货主城市

5. C4单元格表达式为:=demo_订货信息.订单ID

6. D4单元格表达式为:=demo_订货信息.运货商,显示值表达式为=demo_运货商.select1(COMPANYNAME,SHIPPERID==value())

7. E4单元格表达式为:=demo_订货信息.订购日期,显示格式为:yyyy年MM月dd日

8. 美化外观

第4步:预览报表

在【参数定义】中分别输入起始日期和结束日期参数值,即可查出结果报表。

至此,一个按始末日期查询的报表就完成了,这个报表在预览的时候需要输入两个参数。但是对于我们查询过去某周信息的这种需求,这个报表需要确定该周的始末日期才能查询,这点对用户来说很不方便,因为人们一般记不住过去的某个日期所在周的始末日期。如何才能做到随便输入一个日期,就自动算出这个日期所在周的周报表呢?这时就要使用动态参数了。

第5步:使用动态参数

进入“参数定义”窗口,添加一个新参数time,数据类型为日期型,把begintime和endtime两个参数的参数类型都改成“动态参数”,begintime的值填写weekbegin(time),endtime的值填写weekend(time)。

第6步:保存预览

报表保存为“订货信息周报”。现在,随便为time输入一个日期(注意要yyyy-MM-dd的格式来输入),如1996-07-08,就可以获得本节开头要求的报表。

三、小结

1. 动态参数

 简单的说,动态参数就是可以使用表达式的参数。
    普通参数是直接将输入的参数值传给报表进行运算的,而动态参数是一个表达式,报表运算时会先解析该表达式,然后将表达式计算出的结果作为参数值再传给报表进行运算。
    从下面的例子中,我们可以直观的看出普通参数与动态参数的区别。

(1) 参数定义

(2) 报表定义

(3) 预览结果

2. 复杂SQL数据集

使用复杂SQL数据集,用户可以直接在输入框中写sql语句,这种方式比较适合对sql语句有深入了解的用户。

建立复杂SQL数据集的步骤:

【新建数据集】-->写入sql->其它配置-->【预览数据】-->【完成】。

可进行的其它配置包括宏配置、参数设置。

四、函数说明

str()

函数说明:将对象转换成字符型,转换过程中可以进行格式化

语法:str(expression{, format})

参数说明:

         expression 常数对象或表达式

         format 转换过程中进行格式化的格式串

返回值:字符型

示例:

例1:str(123) 返回值"123"。

例2:str(arg1,"yyyy年MM月dd日"),其中arg1为日期型参数,值为1972-09-09,返回值"1972年09月09日"。

例3:str(3456.9876,"¥#,##0.00") 返回值"¥3,456.99"。