一、报表实例
制作“地区订单详细表”,通过设置参数“货主地区”,使用户可以按地区查看订单明细。
二、设计过程
第1步:新建报表
第2步:定义数据集
demo_地区订单:select 订单ID, 订购日期, 货主名称, 货主地址, 货主地区 from DEMO_ORDERS where 货主地区=?
1. 选择主表,勾选字段
2. 在【检索条件设置】页面的打开【参数设置】页面,【增加】一个参数,设置参数的名称为“Area”,参数描述为“地区”,数据类型为“字符串”,参数类型为“普通参数”,默认值为“东北”:
3.返回到【检索条件设置】界面,【增加】一个检索条件,【字段】选为货主地区,【条件值或参数名】选择参数并选择存在的参数【Area】:
4. 返回主界面,进行【数据预览】的结果如下图所示:
5.【查看sql】的结果为:
第3步:编辑报表
1. A3单元格的表达式:=demo_地区订单.Select(订单ID)
2. B3单元格的表达式:=demo_地区订单.订购日期,显示格式为yyyy-MM-dd
3. C3单元格的表达式:=demo_地区订单.货主名称
4. D3单元格的表达式:=demo_地区订单.货主地址
5. E3单元格的表达式:=demo_地区订单.货主地区
6. 合并单元格A1~E1,输入标题:=@Area+"地区订单详细表"
7. 点击菜单栏的【报表属性】-【参数定义】,设置参数Area:
8. 美化外观
第4 步:保存预览报表
报表保存为“地区订单详细表”,预览.
如果我们在【参数定义】中,将参数Area的值设为“华北”,则预览结果如下:
可见,设置不同的Area值,我们就可以查看不同地区的订单详细表。
三、小结
1. 参数的作用
参数的作用是为SQL传入条件值,或为存储过程传入参数值。在简单SQL、复杂SQL及存储过程数据集中,可以使用参数,从而增加数据集使用的灵活性。
要注意的是,参数的作用仅限于此,不能用在SQL的条件值之外的其它位置或存储过程的过程名。
2. 参数的使用
(1) 点击菜单工具栏的【报表属性】-【参数定义】
弹出“参数定义”窗口,如下图所示:
(2) 点击【增加】按钮,新增一个参数,默认名称为“arg1”,数据类型为“字符串”,参数类型为“普通参数”
定义参数的名称、描述、类型、数据类型、值等内容。
(3) 在报表中通过“@参数名”引用参数值。
(4) 如果需要,在数据集中定义参数。
3. 参数的内容
定义参数时,应定义参数的名称、描述、类型、数据类型、值等内容。
参数的类型
参数共有三种类型:
(1) 普通参数:参数值应该由外部传入;
(2) 动态参数:参数值通过一个表达式运算而来;
(3) 会话变量:参数值会从会话(session)中获取对应名称的会话变量;
对于数据集本身来说,数据集并不关心参数的类型,它只需要参数值。而由引擎根据不同的参数类型,以不同的方式拿到参数值,再传给数据集。
参数的名称
参数的名称仅对普通参数有意义,因为普通参数应由外部传入。而外部传入时,就应该以该参数的名称,传入这个参数。
参数的数据类型
因为参数的作用是为SQL及存储过程提供值,因此参数的数据类型为SQL支持的数据类型的一个子集。
参数的值
对于普通参数,这个值将作为默认值,若外部未传入该参数,则以默认值进行后面的动作。未设置时认为是空值,默认值将传入null。
对于动态参数,这里应该设置动态参数的表达式。未设置时认为是空表达式,其运算结果将为null。
4. 数据集的参数定义
建立数据集时增加的参数,可以让使用该数据集制作的报表,按照参数的值起到筛选作用。
添加参数的步骤:
(1) 在检索条件的区域增加一个条件,选择设置为参数的字段、别名、比较符等;
(2) 在参数的页面增加一个参数,设置参数的名称、描述、数据类型、参数类型、默认值等。
为数据集定义参数时,参数定义的数量和顺序,应与SQL语句中的参数标记(即“?”)一一对应。每个参数都应该被用到,且只能被使用一次。