Report Studio之使用宏函数三、在本地SQL中使用prompt宏函数

浏览: 2696

此例,我们将写直接在数据源中执行的SQL语句;在SQL语句中,我们将使用prompt宏函数动态改变过滤条件。

报表需要实现的功能为:列表,按地区和国家显示雇员,运行是会弹出提示对话框,让用户输入国家名称,SQL语句按照输入的国家名称检索数据。

 

准备工作…

 

使用'GO Data Warehouse (Query)'数据包,使用

[Sales (query)].[Employee by region].[Branch region],

[Sales (query)].[Employee by region].[Country],

[Sales (query)].[Employee by region].[Employee name]

作为列表的列,创建一张简单的列表。

 

如何实施…

 

1. 转到Query Explorer,选中列表对应的查询主题;

2. 点击属性窗体中Generated SQL属性右侧的…;

Clipboard Image.png

3. 点击OK;

4. 点击Generated SQL右下角的Convert按钮,编辑SQL语句为:

select distinct
"Branch_region_dimension"."REGION_EN" "Branch_region" , 
"Branch_region_dimension"."COUNTRY_EN" "Country" , 
"EMP_EMPLOYEE_DIM"."EMPLOYEE_NAME" "Employee_name"
 from "GOSALESDW"."GO_REGION_DIM" "Branch_region_dimension", 
"GOSALESDW"."EMP_EMPLOYEE_DIM" "EMP_EMPLOYEE_DIM", 
"GOSALESDW"."GO_BRANCH_DIM" "GO_BRANCH_DIM"
 where
("Branch_region_dimension"."COUNTRY_EN" in (#prompt('Country')#))
and "Branch_region_dimension"."COUNTRY_CODE" = "GO_BRANCH_DIM"."COUNTRY_CODE" 
and "EMP_EMPLOYEE_DIM"."BRANCH_CODE" = "GO_BRANCH_DIM"."BRANCH_CODE"

其中,红色部分为添加的语句。

5. 如果有必要,编辑查询主题中查询项的表达式,指向SQL。

6. 运行并测试报表。在出现的Country提示框中输入China,可以验证,报表按China过滤了。

 

工作原理…

 

本例,我们在本地SQL语句中使用宏函数prompt。本地SQL允许我们直接在数据源中激活查询,返回包含包含查询项的查询主题,并可以在报表中使用。这在一些特定的场景中很有用,省去了开发Framework模型的过程。我们可以检查一下本例中使用的SQL语句,可以发现内容非常简单,就是从三张表的连接中检索出我们需要的三列。在where字句中,我们添加了一个过滤条件:

("Branch_region_dimension"."COUNTRY_EN" in (#prompt('Country')#))

在过滤条件所用的prompt()宏函数,就如同其名字揭示的,用来生成一个提示,并将获取的参数值返回到SQL语句中执行。

prompt()宏函数可以有6个参数:

prompt ( prompt_name , datatype , defaultText , text , queryItem , trailing_text )

提示用户输入单个值。只有“提示名称”为必填。如果未指定数据类型,则默认为字符串型。如果指定“默认文本”,则提示是可选的。指定“文本”后,文本会在值前面。可以指定“查询项目”以利用“查询项目”的提示信息属性。指定“尾随文本”后,尾随文本会附加到值后面。

本例,我们只是用了一个参数prompt_name。

和prompt()类似的还有promptmany()。使用方法类似,只是prompt()只能输入一个值而promptmany()可以逗号分隔的方式输入多个值。

推荐 0
本文由 zhengyi1943 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册