2013-09-25 49 views
0

你好,我試圖把查詢成員作爲過濾條件,我試圖做的代碼是:MDX使用查詢成員過濾器值

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]) 

因此查詢返回期望結果。我只是想知道有沒有更動態的方式來做到這一點?

非常感謝!

回答

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]) }