介绍如何为SQL Server Reporting Services (SSRS)创建MDX参数



在SQL Server Reporting Service中,当我连接到我的多维数据集以创建数据集时,在查询设计器中我使用过滤器创建查询。它为我创建了以下MDX:

  SELECT NON EMPTY { KPIValue("KPI1"), KPIGoal("KPI1"), KPIStatus("KPI1") } 
ON COLUMNS, NON EMPTY { ([Create Date].[Month Num].[Month Num].ALLMEMBERS * [Create Date].[Hierarchy].[Month].ALLMEMBERS ) } 
DIMENSION PROPERTIES MEMBER_CAPTION, 
MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT 
( STRTOSET(@CreateDateYear, CONSTRAINED) ) 
ON COLUMNS FROM [ERP]) 
WHERE ( IIF( STRTOSET(@CreateDateYear, CONSTRAINED).Count = 1, 
STRTOSET(@CreateDateYear, CONSTRAINED), 
[Create Date].[Year].currentmember ) ) 
CELL PROPERTIES VALUE, BACK_COLOR, 
FORE_COLOR, FORMATTED_VALUE, 
FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

当我添加这个数据集时,Reporting Services创建了一个名为CreateDateYear的参数。当我传递像"2014"这样的值给这个参数时,我什么也得不到,我必须传递一个像[Create Date].[Year].&[2014]这样的值。

我怎么能改变我的报告改变这个参数传递值像"2014"而不是丑陋和不友好的字符串[Create Date].[Year].&[2014] ?

我没有更改MDX。在我的报告的数据集属性中,我将Parameter Value更改为:

="[Create Date].[Year].&[" + Parameters!Year.Value + "]"

问题解决了

使用字符串连接在MDX:

中添加"前缀" '[Create Date].[Year].&['和"后缀" ']'
STRTOSET('{ [Create Date].[Year].&[' + @CreateDateYear + '] }', CONSTRAINED)

如果@CreateDateYear包含类似"2014"的内容。

注意:我还在成员唯一名称周围添加了大括号,因为这是MDX中集合的正确语法。如果您希望允许多重选择,那么最好在Reporting Services中进行字符串连接,而不是在MDX中。

最新更新