您好我试图将查询成员作为过滤条件,而我正在尝试的代码是:
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])
然后查询返回所需结果。我只是想知道有没有更动态的方法来做到这一点?
非常感谢!
答案 0 :(得分:1)
VBAMDX.Format(VBAMDX.Now(),"yyyyMM")
返回一个字符串,而不是成员标识符。这类似于SQL select 'myColumn' from myTable
,它返回文字字符串'myColumn'而不是列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]) }