0

您好,我正在尝试将查询成员作为过滤条件,我尝试执行的代码是:

Member [ThisMonth] as VBAMDX.Format(VBAMDX.Now(),"yyyyMM")

  SET [currentdays] AS filter([D Date].[DAY ID].Members,
 [D Date].[MONTH ID]=[ThisMonth])

但是查询没有识别条件

Member [ThisMonth] as VBAMDX.Format(VBAMDX.Now(),"yyyyMM")

      SET [currentdays] AS filter([D Date].[DAY ID].Members,
     [D Date].[MONTH ID].&[201309])

查询因此返回期望结果。我只是想知道是否有更多动态方法可以做到这一点?

非常感谢!

4

1 回答 1

1

VBAMDX.Format(VBAMDX.Now(),"yyyyMM")返回一个字符串,而不是成员标识符。这就像在 SQLselect 'myColumn' from myTable中返回文字字符串 'myColumn' 而不是 column 的内容mycolumn

如果要使用该Format函数,则首先需要构造成员的完整唯一名称,然后使用以下方法将字符串转换为成员标识符StrToMember

Member [ThisMonth] as '[D Date].[MONTH ID].&['
                      + VBAMDX.Format(VBAMDX.Now(),"yyyyMM")
                      + ']'    -- this returns a string!

   SET [currentdays] AS filter([D Date].[DAY ID].Members,
       StrToMember([ThisMonth]))

顺便说一句:你不需要Filter这里,它可以显着减慢查询速度,你可以使用

SET [currentdays] AS { StrToMember([ThisMonth]) }
于 2013-09-25T07:51:22.713 回答