找回密码
 立即注册

QQ登录

只需一步,快速开始

williamluo

高级会员

94

主题

216

帖子

1028

积分

高级会员

积分
1028

活字格认证

williamluo
高级会员   /  发表于:2020-2-24 14:12  /   查看:2739  /  回复:0
本帖最后由 Eden.Sun 于 2023-1-5 18:47 编辑

Wyn Enterprise报表的参数,是实现数据过滤、报表钻取、应用集成的利器,本帖介绍报表中两种参数的概念与相互关系。
Wyn报表设计画面中有两种“参数”:报表参数和查询参数。两者既有关系,更有区别。

(一)报表参数

报表参数是在报表设计页面右侧的【数据绑定】选项卡中定义的参数,从属于报表,因此可以在报表内部的任何表达式中被引用。
定义报表参数的画面如下图:
image.png327592772.png

(二)查询参数

查询参数是在报表内嵌数据集编辑对话框中定义的参数,从属于数据集,仅用于数据集的SQL语句,如下图:
image.png224779967.png

(三)报表参数与查询参数的关系

报表参数与查询参数最直接的关系是:查询参数的值可以来自报表参数。这是通过设置查询参数的【数据】为报表参数的值来实现的,如下图:
image.png200791319.png
通过将查询参数的【数据】设置为 =Parameters!报表参数1.Value 这样的表达式,可在报表预览时,将用户输入的报表参数值,传递给查询参数。
查询参数再应用于数据集的SQL语句,就实现了按照用户输入的查询条件(即报表参数值),查询报表所需的数据。


(四)报表参数与查询参数的区别

将查询参数的数据设置为报表参数值,是最常见的报表参数的用法,也是导致很多用户混淆两者概念的原因。
事实上,报表参数与查询参数存在以下几个根本的区别。

(1)报表参数并不必然用于数据过滤
如果查询参数没有用于数据集的查询语句,那么查询参数的定义实际上没有意义,因此可以说查询参数的唯一用途就是数据过滤。
报表参数则不一样,除了用于设置查询参数的数据,完全可以定义一个直接显示在报表中、不做任何其他用途的报表参数。
比如,可以定义一个【报告日期】参数,默认值为当天日期,同时允许用户修改。参数值直接显示在报表内容中,作为报告日期。如下图:
image.png989546508.png

(2)查询参数并不必然引用报表参数
尽管多数情况下,查询参数的【数据】都会设置为 =Parameters!报表参数1.Value 这样的表达式,从而引用(或称绑定)报表参数。但是查询参数也可以是一个固定的值,或者是一个不引用报表参数的表达式。
比如:可以定义一个查询参数,其【数据】属性设置为 =Today() 这样的表达式,将当前日期作为查询条件。
又如:将查询参数的【数据】设置为 =UserContent.GetValue("name") 这样的表达式,可获取当前查看报表的用户信息,以此作为数据集的查询条件,从而实现数据权限控制。

(3)钻取设置中的参数,是报表参数,而不是查询参数
在报表的【钻取操作】设置中,除了选择跳转的目的报表,另一项重要的设定就是【参数】。如下图:
image.png445632628.png
此处的参数名称,应与钻取目的报表中定义的报表参数的名称,而不是查询参数的名称。

(4)应用集成中的&dp参数,对应的是报表参数,而不是查询参数
在第三方业务系统中集成Wyn报表时,常见的集成方法是URL集成,核心是一个报表查看页面的URL,例如:
http://localhost:51980/dashboards/view/5d5cafe6e98abc00018ff4e5?theme=default&lng=zh-CN&token=97a2e0d351...d61&dp= {"TypeID":[1,3,6],"pname":["汁"]}

URL尾部的 &dp= {"TypeID":[1,3,6],"pname":["汁"]} 称为dp参数(即数据参数,data parameter的首字母缩写),是应用系统传给报表的参数。
其中的TypeID和pname是两个报表参数的名称,而不是查询参数的名称。
也就是说,如果要让报表正确地接收到URL中dp参数传入的参数值,必须在报表设计时定义名称为TypeID和pname的报表参数,而非在数据集的对话框中定义这俩名称的查询参数。



0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部