UniEAP Report最佳实践之——几种特殊参数的使用方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UniEAP™ Report最佳实践之

——几种特殊参数的使用方法

基础软件事业部

东软集团(大连)有限公司

更改履历

注:状态可以为N-新建、A-增加、M-更改、D-删除

目录

第1章概述 (3)

第2章特殊场景参数的用法 (3)

2.1可能为空的参数处理方法 (3)

2.2实现in类型的参数 (5)

2.2.1方法一 (5)

2.2.2方法二 (7)

2.3模糊查询的实现方法 (9)

2.4如何给checkbox类型的参数传值 (10)

第1章概述

UniEAP Report的参数有多种类型,可以实现很多复杂的查询条件,如包含关系、模糊查询、自动替换空参数等应用场景。

【注意】本文所述方法不适用于业务制表特性。

第2章特殊场景参数的用法

2.1可能为空的参数处理方法

参数经常要用到SQL数据集中,在SQL语句中充当条件,甚至充当查询列名。有些参数要求用户必须填写,为必填参数,有些参数允许用户不填,为非必填参数(可能为空),当存在非必填参数时,使用方法有所不同。

UniEAP Report引擎在处理空参数的逻辑是将该参数所在的条件表达式替换为一个始终为真的表达式,如1=1,但在一些较为复杂的SQL中很难在程序中确定参数所在的完整表达式,当传入参数为空时就可能会出现替换出错的情况,导致SQL无法执行.。

针对这种情况的存在报表提供两种标识符---{# #}和{@ @},手动来标识出一个参数所在的完整条件表达式,在报表引擎发现参数为空时就可以准确的找出这个表达式,并对其进行替换。

简单来说,参数为空时{#... #}在实际运行中被替换为“1=1”,{@...@}在实现运行中被替换为“”。使用时,可以根据此原则来写SQL语句。下面用例子说明。

图2-1数据集定义

又例如:select * from employee where {# $a=1 #} and {# birthday <

to_date($b,’yyyy-MM-dd’) #} {@group by {@ $employeeId,@}

{@$name@}@}。当所有参数都为空时,这个SQL就变成了:select * from employee where 1=1 and 1=1。

【注意】请大家在使用参数的时候尽量使用{##}或{@ @}将参数表达式扩起来,特别是当参数可能为空的时候。

2.2实现in类型的参数

2.2.1 方法一

1.在报表设计器中新建参数时,参数类型要选择‘FILED’,这时该参数的值在拼接到sql

中时,作为sql片段,不会增加单引号。

【注意】这种使用方法需要慎重考虑sql注入的安全问题。

从V4.6版本开始,UniEAP Report自带一个安全过滤器,默认会将单引号视为非法字符,因此当参数类型为字符串时,要想让这种方法正常工作,或者可以将安全过滤器禁用(参考《UniEAP Report最佳实践之——使用安全请求过滤器》,但不推荐),或者是改用下一小节介绍的方法二。

图2-2参数定义

2.假设将参数in_param赋值为1,2,3,4,5

3.数据集SQL写法

图2-3 数据集定义

2.2.2 方法二

UniEAP Report为传递字符串类型的多值提供了一个特殊的分隔符“:;”,即一个冒号加

一个引号,用来分隔多个值。下面通过一个例子说明具体用法:

1. 在报表设计器中新建参数时,数据类型选择‘STRING’。

图2-4 参数定义

2. 假设将参数str_param赋值为:榨汁机:;茶几:;冲锋衣,注意这里不要写单引号。

3. 数据集SQL写法:

图2-5 数据集SQL写法

2.3模糊查询的实现方法

1.将参数的数据类型设置为field,比如参数paramname,设置成field数据类型

符串类型的参数在拼接SQL的时候会在字符串两端自动添加引号。

2.4如何给checkbox类型的参数传值

在通过url或者使用openreport公式打开报表时,如果想给目标报表的一个CheckBox 类型参数传值,我们需要在多个值之间使用:; 来分隔,这个是报表针对CheckBox类型参数定义的分隔符.请参考下面实际应用场景来理解:

$paramname的方式获得参数的值,在通过这种方式调用CheckBox类型的参数时所返回的实际是一组值,也就是一个list,在1和2中所描述的参数,在目标报表中调用时会得到List(1,2,3)这样一组值,如下图所示,创建一个名为checkbox_param的参数,类型为Checkbox:

图2-6 参数定义

在报表中使用该参数,上面已经描述过,CheckBox类型的参数返回的一组值,所以在这里设置B2单元格为纵向扩展,如下

图 2-7 定义报表

通过URL 方式访问报表传递参数,报表展现效果如下图

:

图 2-8 报表展现效果

相关文档
最新文档