Report Studio之使用宏函数五、prompt的token参数

浏览: 2925

此例,我们将一起研究一下prompt()宏函数的一个比较特别的属性:token

准备工作…

和前面的博文中的示例一样,此例,我们将创建一张基于native SQL的简单列表。

SQL语句如下:

select distinct
"SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_EN" "Product_line" ,
"SLS_PRODUCT_LOOKUP"."PRODUCT_NAME" "Product_name" ,
"SLS_PRODUCT_COLOR_LOOKUP"."PRODUCT_COLOR_EN" "Product_color" ,
"SLS_PRODUCT_SIZE_LOOKUP"."PRODUCT_SIZE_EN" "Product_size"
 from "GOSALESDW"."SLS_PRODUCT_DIM" "SLS_PRODUCT_DIM",
"GOSALESDW"."SLS_PRODUCT_LINE_LOOKUP" "SLS_PRODUCT_LINE_LOOKUP",
"GOSALESDW"."SLS_PRODUCT_TYPE_LOOKUP" "SLS_PRODUCT_TYPE_LOOKUP",
"GOSALESDW"."SLS_PRODUCT_LOOKUP" "SLS_PRODUCT_LOOKUP",
"GOSALESDW"."SLS_PRODUCT_COLOR_LOOKUP" "SLS_PRODUCT_COLOR_LOOKUP",
"GOSALESDW"."SLS_PRODUCT_SIZE_LOOKUP" "SLS_PRODUCT_SIZE_LOOKUP",
"GOSALESDW"."SLS_PRODUCT_BRAND_LOOKUP" "SLS_PRODUCT_BRAND_LOOKUP"
 where "SLS_PRODUCT_LOOKUP"."PRODUCT_LANGUAGE" = N'EN'
and "SLS_PRODUCT_DIM"."PRODUCT_LINE_CODE" = "SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_CODE"
and "SLS_PRODUCT_DIM"."PRODUCT_NUMBER" = "SLS_PRODUCT_LOOKUP"."PRODUCT_NUMBER"
and "SLS_PRODUCT_DIM"."PRODUCT_SIZE_CODE" = "SLS_PRODUCT_SIZE_LOOKUP"."PRODUCT_SIZE_CODE"
and "SLS_PRODUCT_DIM"."PRODUCT_TYPE_CODE" = "SLS_PRODUCT_TYPE_LOOKUP"."PRODUCT_TYPE_CODE"
and "SLS_PRODUCT_DIM"."PRODUCT_COLOR_CODE" = "SLS_PRODUCT_COLOR_LOOKUP"."PRODUCT_COLOR_CODE"
and "SLS_PRODUCT_BRAND_LOOKUP"."PRODUCT_BRAND_CODE" = "SLS_PRODUCT_DIM"."PRODUCT_BRAND_CODE"
and #prompt ('Field','token','"SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_EN"')# = #prompt ('Value','string')#

 

如何实施…

 

1. 我们已经创建了一张基于上述查询的简单列表。

Clipboard Image.png

2. 拖拽一个3列1行的表格到报表顶部。

3. 拖拽一个Value Prompt对象到表格的第一个单元格。在弹出的向导框中,选择“Use existing parameter”->Field。点击完成。编辑其静态选项如下:

Display                                        Use
Filter on product line             "SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_EN"
Filter on product name                  "SLS_PRODUCT_LOOKUP"."PRODUCT_NAME"

Clipboard Image.png

设置其“Select UI”属性为:Radio button group

设置其“Default selections”属性为:"SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_EN"

4. 拖拽一个Text Box Prompt对象到表格的第二个单元格。在弹出的向导框中,选择“Use existing parameter”->Value。点击完成。

设置其“Default selections”属性为:Golf Equipment。

5. 拖拽一个Prompt Button对象到第三个单元格,设置其Type属性为:Finish。

Clipboard Image.png

6. 运行并测试报表。可以验证,当选择不同过滤方式时,报表在不同的列上进行了过滤。

Clipboard Image.png

工作原理…

 

宏函数prompt()的第二个参数data type决定了返回值得格式。对于“string”类型来说,值被嵌套在一对单引号中返回。但是,对于数据类型“token”,数据会原样返回,不做任何处理。

此例,我们使用了这个参数动态的改变过滤执行的域。首先我们定义了一个单选按钮组,设置其参数为Field,并为此单选按钮组定义了一组静态选项。然后我们定义了一个Text Box Prompt,设置其参数为Value,默认选项为:Golf Equipment。

运行报表,默认情况下,宏函数解析出来的内容为:

"SLS_PRODUCT_LINE_LOOKUP"."PRODUCT_LINE_EN" = ‘Golf Equipment’

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

0 个评论

要回复文章请先登录注册