在Report Builder 2.0中使用MDX参数

时间:2009-04-17 20:16:55

标签: sql-server-2008 parameters mdx reportbuilder

我目前有一个如下所示的查询:

SELECT
  NON EMPTY ([Measures].[TOTAL]) ON 0,
  NON EMPTY (([ENROLL DATE].[CALENDAR].[YEAR].[" + Parameters!EnrollDate.Value + "] * [DIM ENROLLMENT].[ENROLLMENT].[ENROLLMENT PROG].ALLMEMBERS)) ON 1

FROM (SELECT (([DIM ENROLLMENT].[ENROLLMENT].[TERMINATION REASON].[Still Enrolled])) ON 0 FROM [NapaCHI]);

粗体部分来自参数部分,我在其中使用Label = 2006 and Value = 2006手动指定参数。我已经尝试了几乎所有可接受的语法并阅读了关于此的每篇文章,无论我是自己定义值还是使用单独的MDX语句为聚合选择不同的非空年份和(NULL),它似乎无法使其工作。

请帮忙,这让我疯了! 感谢。

2 个答案:

答案 0 :(得分:0)

你的表达看起来不完整,你需要用和=符号启动它并引用它。类似于以下内容

="SELECT
NON EMPTY ([Measures].[TOTAL]) ON 0, 
NON EMPTY (([ENROLL DATE].[CALENDAR].[YEAR].[" + Parameters!EnrollDate.Value + "] * [DIM ENROLLMENT].[ENROLLMENT].[ENROLLMENT PROG].ALLMEMBERS)) ON 1 

FROM (SELECT (([DIM ENROLLMENT].[ENROLLMENT].[TERMINATION REASON].[Still Enrolled])) ON 0 FROM [NapaCHI]);"

您可能还遇到数据类型问题,您可能希望使用参数的.Label属性或显式将值转换为字符串。如果这些都不起作用,那么知道你得到的错误会有所帮助。

答案 1 :(得分:0)

我认为这个MDX要求:

NON EMPTY (([ENROLL DATE].[CALENDAR].[YEAR].[Calendar " + Parameters!EnrollDate.Value + "]

或者您可以使用实际的MDX语言:

[ENROLL DATE].[CALENDAR].[YEAR].&[" + Parameters!EnrollDate.Value + "-01-01T00:00:00]

其中任何一个都应该有用。