报表工具中动态参数的灵活运用

报表开发过程中,有的时候我们会觉得普通参数很难满足一些业务需求,比如第二个数据集要引用第一个数据集的结果进行计算,动态控制 SQL 的过滤条件,动态列等,如果您遇到了这种情况,可以尝试使用动态参数即 ${参数名} 的方式来达到我们想要的效果。

那么,什么是动态参数呢?

动态参数一般是依赖于普通参数的具有计算能力的参数,在报表中动态参数我们可以看做是一个占位符,在报表运算之前,系统会全面搜索整张报表定义,将所有 ${参数名} 中的参数名替换成参数值即 动态参数表达式的结果。

下面我们举几个例子,看一下

  1. 首次展现参数值为空,查询全部数据

实现方法:

a. 将数据集中原有的 where 子句部分,用动态参数替换 如下图

更改前 SQL:

SELECT 订单. 订单 ID, 订单. 客户 ID, 订单. 订购日期, 订单. 货主地区, 订单. 运货商, 订单. 运货费

FROM 订单

where 订单. 订单 ID >=10254

更改后 SQL:

b. 菜单栏中 选择【报表】à 【参数】,新增动态参数,

表达式为:if(bid==null,"",“where 订单. 订单 ID >=”[email protected])

意为:根据参数模板 bid 的参数值是否为空,确定 sql 部分被替换的内容,如下图

注:bid 为参数模板传递的参数名称

c. 其他,设置按照报表常规操作进行开发设计。

2. 第二个数据集要根据引用第一个数据集的结果进行计算

实现方法:

a. 新增动态参数,表达式为第一个数据集的 sql 语句,如下图

参数表达式:

if(@bid==null || @bid=="" ,

“where 订单 ID in (”+string(split(query(“select 订单 ID from 订单 where 货主地区 =?”,“华中”;“demo”),“,”))+“)”,

“where 订单 ID in (”+string(split(@bid,“,”))+“)”)

意为:如果参数 bid 为空,则根据某个 sql 语句的执行结果进行查询,否则根据 bid 参数值进行数据过滤

b. 数据集部分设置如下:

c. 其他,设置按照报表常规操作进行开发设计。

3. 动态控制 SQL 的过滤条件

数据集 SQL 中包含多个过滤条件,假设当订单 ID 及货主地区参数值为空时,SQL 语句中去掉这两个查询条件,同时假如其中一个有值则对应字段过滤生效,否则两个参数都有值时,则订单 ID 及货主地区过滤均生效。

注:参数 arg1 对应订单 ID、参数 arg2 对应货主地区

实现方法:

a. 新增动态参数,利用 if() 函数实现上述逻辑判断,如下图

参数表达式为:

if(arg1=="" || arg1==null,

if(arg2=="" || arg2==null,“1=1”,“货主地区 =’”+arg2+“’”),

if(arg2=="" || arg2==null,“订单 ID=”+arg1,“订单 ID=”+arg1 +“and 货主地区 =’”+arg2+“’”)

)

b. 数据集部分设置如下:

c. 其他,设置按照报表常规操作进行开发设计。

原文地址:https://www.cnblogs.com/xiaohuihui-11/p/12020243.html

时间: 2024-10-25 11:19:37

报表工具中动态参数的灵活运用的相关文章

报表工具中动态参数的使用方法和场景

报表开发过程中,有的时候我们会觉得普通参数很难满足一些业务需求,比如第二个数据集要引用第一个数据集的结果进行计算,动态控制 SQL 的过滤条件,动态列等,如果您遇到了这种情况,可以尝试使用动态参数即 ${参数名} 的方式来达到我们想要的效果. 那么,什么是动态参数呢? 动态参数一般是依赖于普通参数的具有计算能力的参数,在报表中动态参数我们可以看做是一个占位符,在报表运算之前,系统会全面搜索整张报表定义,将所有 ${参数名} 中的参数名替换成参数值即 动态参数表达式的结果. 下面我们举几个例子,看

报表工具的动态数据源实现

有时候我们需要用参数动态指定数据源,或将多数据源连接为单数据源,或向子报表.table控件动态传入数据源名.对于此类需求,报表工具经常要借助高级语言实现或牺牲安全性以降低复杂度,尤其是BIRT.Jasper等单源报表. 使用免费的集算器可以弥补这一不足.集算器封装了丰富的结构化计算函数,支持动态解析表达式,支持多数据源混合计算,书写简单脚本就能实现动态数据源.集算器还提供了简单易用的JDBC接口,报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果. 集算器与报表工

iperf网络测试工具中 -l 参数的作用

当使用iperf工具进行网络测试时,客户端不使用-l 参数设置缓冲区大小,服务端不显示数据,当设置了-l 1k 时,服务端才显示数据是怎么回事呢?请问设置了缓冲区大小影响到了什么,从而导致了这个结果:图一为未加-l参数图二为加了-l参数 请有经验的朋友解惑啊? 原文地址:http://blog.51cto.com/13287875/2112644

报表工具的二次革命之集算器的作用

之前的文章已经大致给大家介绍过大数据计算引擎-润乾集算器了.想必很多人心里还是存在疑惑,集算器作为大数据分析系统,到底它能做些什么?这篇文章,就为大家详细介绍. 降低报表开发难度 降低开发难度从而提高开发效率是集算器的设计初衷,是最容易理解的作用,前面已有粗略介绍. 这方面的细节内容太多,我们会再做一个专门话题详细讲述集算器如何解决报表开发中的各种具体难题以及与常规手段的对比.在这里只做总结性地阐述. 比Java和SQL更易写 如前所述,集算器的设计目标是为了解决报表的数据准备,而目前这个工作一

Stimulsoft Reports.Wpf是针对WPF开发的报表工具控件

Stimulsoft Reports.Wpf是针对WPF开发的报表工具控件.无需上网,所有的WPF功能都能用上!丰富的界面更换功能.查看功能.打印以及导出报表功能——所有的这一切就是它都能轻松实现. 创建Stimulsoft Reports.Wpf是基于Stimulsoft团队多年开发以及使用的报表引擎来创建报表.只需简单的几行代码即可执行报表复杂的操作,报表引擎提供了创建报表的许多功能.大量的组件开发包,独特的一套属性和参数,精心构思的报表体系.很多选项都是绝对独特且仅出现该产品中.Stimu

高效、强大的报表工具

报表工具提供了全新的Web报表设计器,基于非线性报表模型,具有强大的表达式和扩展功能,可轻松快捷.零编码地实现各种复杂报表,是高效.强大的新一代报表工具. 类Excel的Web报表设计器 报表采用类Excel的Web报表设计器,类Excel的界面和操作风格即便是对非专业人士而言,也是一个非常容易上手的报表工具,入门简单快速,可轻松制作出精美的报表,可显著提高报表设计开发的效率. 非线性报表模型 报表基于先进的非线性报表模型,许多复杂报表采用传统报表工具制作起来非常困难(需要编写代码或复杂SQL准

报表工具与报表性能的关系

在选择报表工具时,性能指标一向是用户非常关心的,但是,报表工具的性能和整个报表系统的性能会有多大关系呢? 要回答这个问题,首先要分析一下报表的处理过程包含哪些环节,其中有哪些环节容易出现性能问题,如何优化这些环节. 一.报表处理的一般过程分析 1.用户选择报表输入参数后,报表引擎会根据报表模板和输入参数来解析报表,并将数据计算和读取请求以SQL的方式发送给数据库. 2.数据层负责读取.计算和返回数据.数据层一般都是传统关系数据库:如Oracle.DB2等. 3.数据层通过JDBC等接口将结果数据

实现高端报表工具的缓存功能

高端的报表工具都提供了缓存机制,避免报表重复计算带来额外性能开销,节省CPU资源,实现结果共享.报表在计算过程中,大部分时间(85%以上)都消耗在数据源(准备)上,集算器可以用简单的方法实现数据源的缓存复用,让普通报表工具也拥有缓存机制. 实现数据源缓存有两个关键,根据报表不同的参数和宏生成不同的报表缓存:缓存超时时间需要重新计算.下面以实例说明. 报表描述 根据销售记录表计算各销售人员本年销售额和上年销售额,及其增长率,统计客户数与大客户数(订单金额超过10000).报表样式如下: 该报表供公

如何借助报表工具弥补财务系统不足?

财务系统 财务系统一般具有多币种的处理能力,可由用户定义账本位币,并可以用任何币种为单位进行统计分析.财务系统为用户提供符合我国财务的多种格式的凭证和账簿,包括:收款凭证,付款凭证,转账凭证,数量凭证,外币凭证:银行.现金日记账,数量账,往来账.多栏账,总账,明细账等.财务系统具有功能丰富,灵活性,通用性强,操作简便,严密可靠的特点.它是财务管理的一个核心部分.为企业的库存,采购,销售,生产等提供指导,为企业领导的决策提供及时.准确的财务信息. 企业财务系统除负责会计.财务.税收.ERP(企业资