我正在使用带有SharePoint列表的SSRS报表生成器。我在报表生成器中创建了一个矩阵,通过组织对站点评估状态进行分组。我希望能够设置保存组织名称的单元格的背景颜色,具体取决于属于该组织的站点的整体评估状态。
我的网站评估状态值为“未启动”,“正在进行中”,“已完成”。如果组织的任何站点的状态为“未启动”,则组织单元的背景颜色为红色。只要组织的所有站点都处于“进行中”状态,组织的背景单元格就是黄色。最后,只要所有组织站点的值都是“完整”,那么组织的背景颜色就是绿色。
我知道如何使用表达式来调用代码来更改单元格的背景颜色,但不知道如何传递我需要的值或循环遍历这些值。我想我必须在自定义代码部分用VB编写一些东西,但不知道如何在一个包含Report Builder的组中循环
答案 0 :(得分:2)
尝试在Organization的背景颜色属性中使用此表达式:
=Switch(
Array.IndexOf(LookupSet(Fields!Organization.Value,Fields!Organization.Value,Fields!Status.Value,"DataSet2"),"Not Started")>-1,"Red",
Array.IndexOf(LookupSet(Fields!Organization.Value,Fields!Organization.Value,Fields!Status.Value,"DataSet2"),"In Progress")>-1,"Yellow",
Array.IndexOf(LookupSet(Fields!Organization.Value,Fields!Organization.Value,Fields!Status.Value,"DataSet2"),"Complete")>-1,"Green"
)
它产生了这个:
更新1:
Switch函数评估每个案例:
Not Started
值In Progress
值。Complete
个值。)为了检查“状态”列中是否存在Not Started
值,我使用了IndexOf()和LookupSet()个函数。 LookupSet将为我提供一个包含每个组织状态的数组,因此使用IndexOf我搜索未开始,正在进行或完成值。如果找到一个值,它将返回存储在数组中的索引,否则返回-1。
更新2:基于用户评论的版本。
首先,您必须了解Switch功能在SSRS中的工作原理。实际上,它非常简单,每一行都根据Switch函数的每个case表达式进行评估。当一行匹配条件时,有一个Not Started
值,即根据Switch函数中的每个条件计算下一行,依此类推。
请注意,案例按照编写顺序进行评估。所以在我们的 方案首先根据条件对每一行进行评估 如果条件为
Not Started
,则包含false
个值 继续到下一个条件,如果它是false
它继续 下一个条件等等,直到条件为真或所有条件 被评估。
如果有帮助,请告诉我。