此例的目的是向大家介绍一个非常有用非常强大的报表控制工具:Conditional block。
用户需要一张销售数量的报表,并且希望按照不同的维度,如:product lines,periods,或者retailer region显示数据。每次使用一个维度。为了使用方便,他们不希望有三张不同的报表,而是希望在一张报表中,通过切换的方式看到三种类型的数据。
准备工作…
新建一张拥有3个列表对象的报表。定义报表的列如下:
List 1: Product | Product lines and Sales fact | Quantity.
List 2 :Time dimension | Current year, Time dimension | Current month and Sales fact | Quantity.
List 3: Retailer site | Region and Sales fact | Quantity.
为所有报表对象定义合适的分组、排序和聚合。确定所有的报表对象使用不同的查询。
如何实施…
1. 我们从创建一个用于报表类型的prompt开始。转到Page Explorer并添加一个prompt page。
2. 添加一个value prompt到prompt page工作区。定义参数名称为paramReportType。请注意,此处不需要定义任何过滤,使用值或者显示值。
3. 选中此value prompt,从属性列表中打开Static Choice属性。
4. 定义3个静态选项,如下图所示。
5. 转到Condition Explorer,新建一个String Variable。定义其表达式为:
ParamValue('paramReportType')。
6. 为此变量添加3个值:BD、BP和BR。修改变量名为ReportType。
7. 转到report page,添加一个Conditional block到报表工作区。
8. 选中此conditional block,并从属性栏中打开Block Variable对话框。从下拉列表中选择ReportType变量,然后点击OK。
9. 从属性框中选择BP为current block。选中按products显示sales quantity的第一个列表,并拖拽其到conditional block内(此处,我们需要用到Ancestor按钮以选中整个列表)。
10. 修改此conditional block的current block属性为BD,拖拽“Salesman by Periods”列表到conditional block中。
11. 重复对BP和最后一张报表应用以上操作。
12. 在报表头部,选中“Double click to edit text”,修改其Source type属性为Report expression。定义此表达式为:
ParamDisplayValue('paramReportType')。
13. 运行并测试报表。
工作原理…
在前面博文“条件样式”的示例中,我们已经知道如何定义条件变量,并使用它来定义条件样式。而在此例中,我们探讨了条件变量时如何在conditional block中使用的。
Conditional block是一个很有用的组件,它允许报表在特定条件下显示特定的对象。它在需要隐藏或显示整个对象时很有用。当然此例也可以通过显示或隐藏特定的列来实现。
更多…
为条件参数的“Other”选项定义合适的内容是一个很好的做法。除非需求明确定义了“Other”选项为空,否则最好不要这么做。