您應該使用
SCOPE
(
[Measures].[Data value], [Fact Base].[Confidentiality Status].[Confidential]
);
Fore_Color(This) = 255
END SCOPE;
備選地,但效率較低:
SCOPE
(
[Measures].[Data value]
);
If([Fact Base].[Confidentiality Status].CurrentMember IS [Fact Base].[Confidentiality Status].[Confidential]) Then
Fore_Color(This) = 255
End If;
END SCOPE;
這設置前景色度量Data value
和Confidential
構件。
什麼您的代碼做是設置前景色如果,對於Confidential
構件,當前度量的值(其爲總是Data value
範圍內)不爲空或0。當評估數值表達式作爲條件,在MDX中,所有不爲0或null的值都被評估爲true。如果您在此處使用會員,MDX會檢查其當前值的值。要檢查層次結構的當前成員是否是特定的成員,請使用IS
,正如我在上面的第二個版本中所做的那樣。
編輯 由於要求是,以檢查是否在當前單元格,則包含的數據,如果該維度包含在查詢或不被涉及到保密狀態的「機密」,沒關係,你可以使用方法:
SCOPE
(
[Measures].[Data value]
);
If(Intersect(EXISTING [Fact Base].[Confidentiality Status].[Confidentiality Status].Members,
{[Fact Base].[Confidentiality Status].[Confidential]}).Count = 1 Then
Fore_Color(This) = 255
End If;
END SCOPE;
這用來檢查與當前小區和由Confidential
構件中的所述一個元件組的數據存在Confidentiality Status
水平Confidentiality Status
屬性層次結構的所有成員之間的交叉點具有一個元件,用換句話說,如果該成員包含在現有成員中rs級別。
你確定發生錯誤渲染的值真的是0嗎?或者它們可能是空的(即缺少記錄)? – FrankPl 2014-10-20 17:18:14
@FrankPl是的,我甚至嘗試將數據從0更改爲其他內容,然後重新處理多維數據集。當我這樣做時,顏色呈現爲預期(即紅色)。當我改回0時,它再也沒有了。 – 2014-10-20 20:09:54
我不確定這是Excel還是Analysis Services問題。您可以從Management Studio運行一個MDX查詢,您可以在語句的最後(在所有FROM和WHERE子句之後)追加'CELL PROPERTIES VALUE,FORMATTED_VALUE,FORE_COLOR',然後在結果中雙擊一個包含零到請參閱FORE_COLOR屬性值? – FrankPl 2014-10-21 07:45:59