您应该使用
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