企业主想要查看雇员的销售业绩,并且希望可以很方便的控制报表显示特定的地区、国家或者雇员。
当他们选择一个地区时,他们希望国家提示的下拉列表中只显示属于此地区的国家。相似的,当国家被选定是,雇员提示下拉列表也要显示属于此国家的雇员。
准备工作…
使用Employee by region| Employee name和Sales fact| Quantity作为列表的列创建一张简单的报表。
为Employee name定义合适的分组和排序,确定Quantity的聚合被正确的设置了。
如何实施…
1. 我们从在报表查询上创建detailed filters开始。选中列表,点击工具栏中的Filters按钮,打开filters对话框。
2. 添加3条如下所示的filters:
a. [Employee name]=?Employee?
b. [Sales (query)].[Employee by region].[Country]=?Country?
c. [Sales (query)].[Employee by region].[Region]=?Region?
3. 设置所有的filters为Optional。
4. 创建一个prompt page。我们从在Region上添加一个提示开始。
5. 从Insertable Objects中,拖拽一个value prompt到工作区。在提示向导中,选择存在的参数Region,并为此参数创建一个叫做Regions的新查询。
6. 点击Finish按钮。
7. 添加另一个value prompt。选择存在的参数Country,并为此参数创建一个叫做Countries的新查询。在同一页面中,选择Region作为Cascading source。
8. 类似的,为employee添加第三个prompt。选择Employee作为参数,Employees作为查询名称,Country作为Cascading source。
9. 选中Region提示,并设置其Auto-Submit属性为Yes。同样设置Country提示。
10. 运行并测试报表。
工作原理…
此例中,用户可能在整个公司层面运行报表,选择特定的region;选择一个region和country的组合;或者完全选择三个提示的组合。我们想允许用户在任一个阶段提交他们的选择。这就是为什么我们创建3个filters并设置它们为Optional。
甚至就算用户想强制直接选择employee,我们还是要保留在region和country上的过滤。原因是同一个employee可能在不同的region和不同的country有销售业务。通过保留这些filters,我们可以确定报表检索的数据是特定region特定country特定employee下的数据。
Cascaded source
当我们设置Cascaded source属性时,Report Studio确定了2件事情:第一,只有cascade
source被满足后,prompt才是可用的;第二,当cascade source被满足后,prompt的值也被相应的过滤了。
此例中,country prompt是无效,除非region prompt提交了有效的值;类似的,employee prompt是无效的,除非country prompt提交了有效的值。
更多…
在第9 步中,我们为prompt设置Auto-Submit属性为Yes。
自动提交(Auto submit)
当auto-submit属性被设置为Yes时,提示值会被自动提交。
当用户为上级prompt选择了一个值,从属的prompt会被自动过滤并且可用。
此例中,Region prompt的auto-submit属性被设置为Yes。因此,当一个region被选择,其值会被自动提交,Country prompt变为可用,并且显示出正确过滤后的值。
提交操作也可以通过一个合适的按钮执行。在这种情况下,auto-submit就不需要了。在下一示例中,我将会详细描述。