你怎么阴交行SQL服务器上报服务的报告?


编辑: 有一群很好的答案,下面列出从-- 快速简单的复杂和综合的.唉,我只能选择一个...

有帮助吗?

解决方案

去表行的BackgroundColor财产和选择"的表达方式..."

使用这种表达式:

= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

这招可以应用于许多领域的报告。

和中。净3.5+你可以使用:

= If(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

不找rep-我只是研究这个问题我自己和我以为我会分享。

其他提示

使用IIF(RowNumber...)可能会导致一些问题行时分组和另一种替代方法是使用一个简单的VBScript函数确定的颜色。

这是一个小小的更多的努力,但当的基本解决方案是不够的,这是一个不错的选择。

基本上,你代码添加到报告如下...

Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
         ByVal EvenColor As String, ByVal Toggle As Boolean) As String
    If Toggle Then bOddRow = Not bOddRow
    If bOddRow Then
        Return OddColor
    Else
        Return EvenColor
    End If
End Function

然后每个单元上,设置BackgroundColor如下:

=Code.AlternateColor("AliceBlue", "White", True)

全部细节都在这 Wrox的文章

我的国际象棋的效果,当我使用Catch22的解决方案,我想因为我的矩阵有多栏的设计。表达工作的现对我说:

=iif(RunningValue(Fields![rowgroupfield].Value.ToString,CountDistinct,Nothing) Mod 2,"Gainsboro", "White")

我已经改变@Catch22的解决方案的一位为我不喜欢这个想法具有进入各个领域,如果我决定要改变一种颜色。这是特别重要的是,在报告的许多领域,将需要有颜色变量的变化。

'*************************************************************************
' -- Display alternate color banding (defined below) in detail rows
' -- Call from BackgroundColor property of all detail row textboxes
'*************************************************************************
Function AlternateColor(Byval rowNumber as integer) As String
    Dim OddColor As String = "Green"
    Dim EvenColor As String = "White"

    If rowNumber mod 2 = 0 then 
        Return EvenColor
    Else
        Return OddColor
    End If
End Function

注意到我已经改变的职能从一个接受的颜色一个包含的颜色可以使用。

然后在每个场址:

=Code.AlternateColor(rownumber(nothing))

这是更强大的手动改变颜色在各个领域的背景的颜色。

有一件事我注意到的是,无论是顶级的两种方法有任何概念的是什么颜色的第一行应该在一个组;该小组将只是开始与相对的颜色从最后一行的以前的小组。我想我的团体始终具有相同的颜色...第一行中的每个集团应该始终是白色,下一行彩色的。

基本概念是重置肘时每个集团开始,所以我加了一点代码:

Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
         ByVal EvenColor As String, ByVal Toggle As Boolean) As String
    If Toggle Then bOddRow = Not bOddRow
    If bOddRow Then
        Return OddColor
    Else
        Return EvenColor
    End If
End Function
'
Function RestartColor(ByVal OddColor As String) As String
    bOddRow = True
    Return OddColor
End Function

所以我有三个不同类型细胞的背景现在:

  1. 第一列的数据的行有=代码。AlternateColor("AliceBlue"、"白色",True)(这是与先前相同的回答。)
  2. 剩余的数据列行有=代码。AlternateColor("AliceBlue"、"白色",False)(这也是同前面的回答。)
  3. 第一列的分组行有=代码。RestartColor("AliceBlue")(这是新的。)
  4. 剩下列的分组行有=代码。AlternateColor("AliceBlue"、"白色",False)(此前使用过,但没有提到它的分组行。)

这对我的作品。如果你想分组行的非色或不同的颜色,这应该是相当显而易见的,从这个如何改变它。

请随意添加意见关于可以做些什么来提高这个代号:我是全新的两SSR和VB,所以我强烈怀疑,还有很多改进的余地,但其基本思想似乎是合理的(这是对我有用),所以我想把它扔在这里。

对于集团的头/脚注:

=iif(RunningValue(*group on field*,CountDistinct,"*parent group name*") Mod 2,"White","AliceBlue")

你也可以使用这个"重启"的行颜色数内每个小组。我想第一个详细的行在每个分组开始有白色的和这个解决方案(当使用的详细行)允许这样的事情发生:

=IIF(RunningValue(Fields![Name].Value, CountDistinct, "NameOfPartnetGroup") Mod 2, "White", "Wheat")

参见: http://msdn.microsoft.com/en-us/library/ms159136(v=sql。100).aspx

迈克尔*哈伦的解决方案工作的现我。但是我得警告说,"透明"是不是一个有效的BackgroundColor当的预览。找到一个快速的修复 设置BackgroundColor的报告元素。.使用什么,而不是"透明"

= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", Nothing)

唯一有效的方式来解决这个不使用VB是以"储存"行分组的模价值内的行分组(部和外部的列分组),并参照明确的内列的分组。我发现这个方案在

http://ankeet1.blogspot.com/2009/02/alternating-row-background-color-for.html

但Ankeet不是最好的工作的说明发生了什么,他的解决方案建议的不必要步骤建立一个分组在一个恒定值,因此,这里是我的逐步进程的矩阵有一个单一的行组RowGroup1:

  1. 创建一个新的栏内RowGroup1.重命名的文本对于这样的东西RowGroupColor.
  2. 设置价值RowGroupColor的文本框

    =iif(RunningValue(Fields![RowGroupField].Value ,CountDistinct,Nothing) Mod 2, "LightSteelBlue", "White")

  3. 设置BackgroundColor财产的所有行细胞

    "=ReportItems!RowGroupColor.Value"

  4. 设置宽度的RowGroupColor列0pt和设可以扩大 以虚假的隐藏它的客户。

瞧!这也解决了许多问题提到这个主线:

  • 自动重设为分组:只是添加一个新的列 行组,执行一个 RunningValue它的 小组的价值观。
  • 没有必要担心True/False切换。
  • 颜色仅仅举行一场简单的修改。
  • 可以互换使用上的行或列组(只设高度为0,而不是宽度)

这将是真棒,如果固态继电器会让性之外的价值在本框.你可能只是东西,这种计算在BackgroundColor财产的行基本框然后参考它作为ReportItems!行组.BackgroundColor在所有其他细胞。

啊好吧,我们可以梦想...

我的问题是,我希望所有列在行为具有相同的背景。我两个分组通过的行和通过柱,并且与前两个方案在这里,我得到了 所有 行列1色的背景,所有的行列于第2栏带白色的背景,所有的行第3栏中有颜色的背景等等。这是因为如果 RowNumberbOddRow (的Catch22的解决方案)注意到我的列组而不是忽略,只有交流与新行。

什么我想是的所有 在第1行中有一个白色的背景,然后所有的列在行2到有彩色的背景,然后所有的列在第3行有一个白色的背景等等。我得到了这种效应通过使用所选择的答案而不是传递 NothingRowNumber, 我的名字我的列组,例如

=IIf(RowNumber("MyColumnGroupName") Mod 2 = 0, "AliceBlue", "Transparent")

想这可能是有益的其他人。

我觉得这一招不在这里讨论。所以这里就是

在任何类型的复杂的矩阵,当你想要的备用电池的颜色,或者行明智的或列明智的, 工作方案是,

如果你想要一个备用颜色的细胞coloumn明智然后,

  1. 在右下角的一份报告的设计图,在"柱 小组",创建一个假的父母组1(使用的表达),取名 "FakeParentGroup".
  2. 然后,在报告的设计,对于细胞,以色的 或者,使用以下背景色的表达

=IIF(RunningValue(Fields![ColumnGroupField].值,countDistinct,"FakeParentGroup")MOD2、"白色"、"LightGrey")

这就是所有的。

相同的其他颜色的行明智的,只是你必须编辑解决方案。

注:在这里,有时需要设置边界的细胞因此,通常它就消失了。

也不要忘记删除价值1报告说,进入了图片的时候你创造了假的父母组。

如果为整个报告你需要一个交替的颜色,可以利用的数据集Tablix定的报告范围的身份rownumber的报告和使用,在RowNumber功能...

=IIf(RowNumber("DataSet1")  Mod 2 = 1, "White","Blue")

@埃迪亚的回答是巨大的,但有些情况下格式将被甩出,如果第一单元的排(行背景格式)有一个缺失的价值(在复杂的tablixes与柱/行集团和失踪值)。

@Aditya的解决办法巧妙地利用了 countDistinct 结果, runningValue 功能识别的行号内tablix(行)集团。如果你有tablix行中的缺失值的第一个单元, runningValue 将不会增加 countDistinct 结果,它将返回的前排的数量(并因此会影响到格式化的电池)。考虑到这一点,你必须添加一个额外期来抵消 countDistinct 值。我需要检查的第一次运行数值在排组本身(见线3段以下):

=iif(
    (RunningValue(Fields![RowGroupField].Value, countDistinct, "FakeOrRealImmediateParentGroup")
    + iif(IsNothing(RunningValue(Fields![RowGroupField].Value, First, "GroupForRowGroupField")), 1, 0)
    ) mod 2, "White", "LightGrey")

希望这会有所帮助。

可能有人解释的逻辑背后转向其他领域误,在以下代码(从上述员额)

有一件事我注意到的是,无论是顶级的两种方法有任何概念的是什么颜色的第一行应该在一个组;该小组将只是开始与相对的颜色从最后一行的以前的小组。我想我的团体始终具有相同的颜色...第一行中的每个集团应该始终是白色,下一行彩色的。

基本概念是重置肘时每个集团开始,所以我加了一点代码:

Private bOddRow As Boolean
'*************************************************************************
'-- Display green-bar type color banding in detail rows
'-- Call from BackGroundColor property of all detail row textboxes
'-- Set Toggle True for first item, False for others.
'*************************************************************************
'
Function AlternateColor(ByVal OddColor As String, _
                  ByVal EvenColor As String, ByVal Toggle As Boolean) As String
         If Toggle Then bOddRow = Not bOddRow
         If bOddRow Then 
                Return OddColor
         Else
                 Return EvenColor
         End If
 End Function
 '
 Function RestartColor(ByVal OddColor As String) As String
         bOddRow = True
         Return OddColor
 End Function

所以我有三个不同类型细胞的背景现在:

  1. 第一列的数据的行有=代码。AlternateColor("AliceBlue"、"白色",True)(这是与先前相同的回答。)
  2. 剩余的数据列行有=代码。AlternateColor("AliceBlue"、"白色",False)(这也是同前面的回答。)
  3. 第一列的分组行有=代码。RestartColor("AliceBlue")(这是新的。)
  4. 剩下列的分组行有=代码。AlternateColor("AliceBlue"、"白色",False)(此前使用过,但没有提到它的分组行。)

这对我的作品。如果你想分组行的非色或不同的颜色,这应该是相当显而易见的,从这个如何改变它。

请随意添加意见关于可以做些什么来提高这个代号:我是全新的两SSR和VB,所以我强烈怀疑,还有很多改进的余地,但其基本思想似乎是合理的(这是对我有用),所以我想把它扔在这里。

我尝试了所有这些解决方案上的一个分组Tablix与行的空间而没有工作,在整个报告。其结果是重复的色行和其他解决方案导致交替列!

这里是我写的,为我工作使用一个的列数:

Private bOddRow As Boolean
Private cellCount as Integer

Function AlternateColorByColumnCount(ByVal OddColor As String, ByVal EvenColor As String, ByVal ColCount As Integer) As String

if cellCount = ColCount Then 
bOddRow = Not bOddRow
cellCount = 0
End if 

cellCount  = cellCount  + 1

if bOddRow Then
 Return OddColor
Else
 Return EvenColor
End If

End Function

7列Tablix我用这个表达对行(细胞)Backcolour:

=Code.AlternateColorByColumnCount("LightGrey","White", 7)

只是因为没有答复上述的似乎是工作我的矩阵,我张贴这里:

http://reportingservicestnt.blogspot.com/2011/09/alternate-colors-in-matrixpivot-table.html

我的矩阵的数据有缺失值的,所以我是不是能够获得艾哈迈德的解决方案的工作,但是 这个方案为我工作

基本想法是创建一个儿童小组和外地在你内心深处的小组包含的颜色。然后设置的颜色对于每个单元在行基于这一领域的价值。

稍微修改其他的答案在这里,为我工作。我的小组有两个值向小组,使我能够仅仅是把他们两个在第一个参与+得到它的备选正确

= Iif ( RunningValue (Fields!description.Value + Fields!name.Value, CountDistinct, Nothing) Mod 2 = 0,"#e6eed5", "Transparent")

当使用行列组这两个,我有一个问题,那里的颜色将替代之列,即使它是同一行。我解决这个通过使用全球变量,候补成员只有当排的变化:

Public Dim BGColor As String = "#ffffff"

Function AlternateColor() As String
  If BGColor = "#cccccc" Then
    BGColor = "#ffffff"
    Return "#cccccc"
  Else
    BGColor = "#cccccc"
    Return "#ffffff"
  End  If
End Function

现在,在这 第一 列的行你想要的替代、设置色的表达:

=代码。AlternateColor()

-

在剩下列设置的所有:

=代码。BGColor

这应该使颜色的替换后,才第一列是绘制。

这可能(unverifiably)提高绩效,也因为它不需要做一个数学计算的每个柱。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top