Sorting SSRS中不同颜色的分类
我有一位客户希望在SSRS报告中使用一些颜色格式。由于客户要求,我无法使用分组。我有按Sorting SSRS中不同颜色的分类,sorting,reporting-services,ssrs-2008-r2,Sorting,Reporting Services,Ssrs 2008 R2,我有一位客户希望在SSRS报告中使用一些颜色格式。由于客户要求,我无法使用分组。我有按主油箱进行排序的报告,希望排序颜色交替。因此,它将有几排储罐A全部为灰色,然后几排储罐B全部为白色。我目前正在使用它,但它只适用于每种类型的第一行 =iif( Fields!Tank.Value=上一个字段(Fields!Tank.Value), “透明”, “红色” ) 任何帮助都会很好。我会在您的查询中添加一个返回0或1的列来定义颜色概念草图:使用rank获得与排序顺序相关的数字,然后使用MOD 2获得0或
主油箱进行排序的报告
,希望排序颜色交替。因此,它将有几排储罐A
全部为灰色,然后几排储罐B
全部为白色。我目前正在使用它,但它只适用于每种类型的第一行
=iif(
Fields!Tank.Value=上一个字段(Fields!Tank.Value),
“透明”,
“红色”
)
任何帮助都会很好。我会在您的查询中添加一个返回0或1的列来定义颜色概念草图:使用rank获得与排序顺序相关的数字,然后使用MOD 2获得0或1。如果您发布一个示例查询,我们可以帮助您了解具体情况。我会在您的查询中添加一个返回0或1的列来定义颜色概念草图:使用秩获得与排序顺序相关的数字,然后使用MOD 2获得0或1。如果您发布一个示例查询,我们可以帮助您了解具体情况。您可以使用自定义代码获取所需的逻辑。在代码中使用一个自定义函数,该函数返回基于储罐值的颜色 进入
报告
菜单,报告属性
/代码
选项卡,在文本区域中输入以下代码:
Dim prevColor As String = "Transparent"
Public Function GetColor(ByVal flag As Integer) As String
If flag = 1 Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
Return prevColor
End Function
现在,在“单元格背景颜色”属性中,使用以下表达式:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1))
它将为背景着色,如下所示:
更新:上述逻辑仅正确地显示第一、第三、第五列等。它是由多次调用GetColor
函数和覆盖全局变量prevColor
引起的
通过将行号传递给函数,我成功地解决了这个问题。这是更新后的功能:
Dim prevColor As String = "Transparent"
Dim rowNum As Integer = 0
Public Function GetColor(ByVal flag As Integer, ByVal nRow As Integer) As String
If flag = 1 And rowNum <> nRow Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
rowNum = nRow
Return prevColor
End Function
用数据集的实际名称替换“DataSet3”
它应生成以下表格:
如果有帮助,请告诉我。您可以使用自定义代码获取所需的逻辑。在代码中使用一个自定义函数,该函数返回基于储罐值的颜色 进入
报告
菜单,报告属性
/代码
选项卡,在文本区域中输入以下代码:
Dim prevColor As String = "Transparent"
Public Function GetColor(ByVal flag As Integer) As String
If flag = 1 Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
Return prevColor
End Function
现在,在“单元格背景颜色”属性中,使用以下表达式:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1))
它将为背景着色,如下所示:
更新:上述逻辑仅正确地显示第一、第三、第五列等。它是由多次调用GetColor
函数和覆盖全局变量prevColor
引起的
通过将行号传递给函数,我成功地解决了这个问题。这是更新后的功能:
Dim prevColor As String = "Transparent"
Dim rowNum As Integer = 0
Public Function GetColor(ByVal flag As Integer, ByVal nRow As Integer) As String
If flag = 1 And rowNum <> nRow Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
rowNum = nRow
Return prevColor
End Function
用数据集的实际名称替换“DataSet3”
它应生成以下表格:
让我知道这是否有帮助。当我将其应用于整行时,这是有效的,但我有多个列具有基于其他变量的自定义填充表达式,因此我必须将您给出的表达式放入我特别想要着色的列中。问题是它只对你的代码的其他每一列起作用。我不完全明白你的意思,它只对一列起作用,是你的问题吗?我还不能链接图片,但它对A列起作用,所有的格式和颜色都是正确的。列B将完全没有颜色。列C将具有正确的颜色。列D将完全没有颜色。是的,我仔细检查了B列和D列在填充部分是否有正确的表达式。@Aerobane,起初我以为你想给一列上色。函数仅在第一列正确着色。现在您可以使用update函数实现所需的结果。当我将其应用于整行时,这是有效的,但我有多个列,其中有一个基于其他变量的自定义填充表达式,因此我必须将您给出的表达式放入我特别想要着色的列中。问题是它只对你的代码的其他每一列起作用。我不完全明白你的意思,它只对一列起作用,是你的问题吗?我还不能链接图片,但它对A列起作用,所有的格式和颜色都是正确的。列B将完全没有颜色。列C将具有正确的颜色。列D将完全没有颜色。是的,我仔细检查了B列和D列在填充部分是否有正确的表达式。@Aerobane,起初我以为你想给一列上色。函数仅在第一列正确着色。现在,您可以使用update函数实现所需的结果。