日期:2014-05-18  浏览次数:20518 次

Reporting Services报表的参数如何传到MDX里
用MDX做Reporting Services报表,X轴为时间维度,Y轴为金额合计柱状图。有一个时间的单选下拉框,可以选择2005年7月,2005年8月,2005年9月,2005年10月,2005年11月。。。
现在的情况是,当任意选择参数时,比如选择2005年9月,报表呈现出来的是2005年9月的金额合计柱状图。
我想实现的是当任意选择参数时,比如选择2005年9月,报表呈现出来的是2005年9月以及2005年9月之前10个月的各个柱状图。

现在的MDX如下:
SELECT NON EMPTY { [Measures].[金额] } ON COLUMNS,  
  NON EMPTY { ([时间].[月].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION,  
  MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( STRTOMEMBER(@[参数], CONSTRAINED) ) ON COLUMNS  
  FROM [TEST]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

如果对MDX的STRTOMEMBER部分进行修改,变成:
SELECT(STRTOMEMBER(@[参数], CONSTRAINED) : STRTOMEMBER(DATEADD("m",-10,Parameters!参数.Value), CONSTRAINED)

执行会报错,请问应如何修改。

------解决方案--------------------
StrtoMember的字符串参数必须遵循Cube中维度属性的格式,比如,日期维度中date层次中的date属性是 [Date].[Date].&[20020708] 表示2002年7月8日,那么StrToMember的参数需要下面的连接:
"[Date].[Date].&[" + @Parameter + "]"

例:其中@Parameter为SSRS的日期类型参数
StrtoMember("[Date].[Date]." + "&[" + VBA!format(VBA!DateAdd("m", -10, @Parameter), "yyyMMdd") + "]")