运行SSRS2012 . 我们使用多维数据集进行报告,因此无法更改MDX /查询代码 .
我从客户端多维数据集中有一个简单的查询:Client.ClientID,Client.ClientName,Client.ClientAddress
我使用查询设计器将ClientID作为参数添加 .
SSRS自动:
-
在报表设计器@ClientClientID中创建了参数
-
创建了参数数据集
-
在Client数据集的参数选项卡下添加了参数
这是预期的行为,报告按预期运行,提示我从列表中选择一个值 . 如果我这样做,它会返回我所追求的单个客户端的数据 .
这是我的问题 .
尽管它有效,但返回的值列表很长,因此很难使用 . 用户一次只能为一个客户端运行此报告,因此他们希望键入单个客户端ID并运行报告 .
我已经尝试了所有我能想到的东西 .
我最接近的是添加另一个参数@PreFilter并将其用作参数数据集的过滤器 .
然而,对用户来说这太糟糕了 . 系统会提示他们将客户端ID输入@PreFilter,然后他们必须等待一个年龄(因为参数数据集被过滤),然后他们从@ClientClientID参数提示中选择完全相同的客户端ID .
我仍然提示选择一个值 .
肯定有更好的办法!
2 回答
听起来像数据建模问题 . ClientId in参数可能直接来自事实表,而不是来自Client维 . 如果数据被正确建模,例如星型模式具有单独的事实和维度,检索客户端数据应该更快 .
最后 - 一个更好的方法 .
来自报告设计页面
确保显示“报告数据”窗格(如果没有,请单击“查看”菜单并单击“报告数据”选项)
从Report Data菜单中,展开Parameters文件夹(单击按钮)
当您在查询设计器中针对ClientID单击"Parameter"时,将会自动创建一个参数(以及自动创建的参数数据集) .
右键单击此参数(@ClientClientID)
选择参数属性
将可用值选项设置为"None"
将“默认值”选项设置为"None"
单击“确定”
从“报表数据”窗格中,展开“数据集”文件夹(单击按钮)
右键单击每个数据集(自动创建的参数数据集除外)
单击“数据集属性”
点击参数菜单项(左侧)
在参数名称下,您将看到列出的ClientClientID .
在参数下,您将看到一个带有@ClientClientID的下拉框 . 你需要改变它
单击@ClientClientID旁边的Fx按钮
Replace = Parameters!ClientClientID.Value with = "[Client].[ClientID].&[" Parameters!ClientClientID.Value "]"
点击OK你应该好好去 .