首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Reporting Services 2005 表格奇偶列顏色交替顯示的兩種實作方法

     編輯:關於SqlServer

需求背景

為了提升報表閱讀體驗,參考 Excel 2007 的視覺風格,在 Reporting Services 2005 表格中實現奇偶列背景色交替(綠色條紋效果)。

方法一:系統函數 RowNumber + IIf 運算式

直接在每個文字方塊的 BackgroundColor 屬性設定運算式:

=IIf(RowNumber(Nothing) Mod 2 = 1, "Lavender", "White")

原理說明

  • RowNumber(Nothing):傳回最外層資料區域的列序號(從 1 開始)
  • Mod 2:奇數列為 1,偶數列為 0
  • IIf:依條件回傳淡紫色或白色

進階:封裝為自訂函式

為了跨報表複用,可在報表屬性 → 程式碼 中定義:

Public Function AlternateRowColor(ByVal rowNum As Integer) As String
    If rowNum Mod 2 = 1 Then
        Return "Lavender"
    Else
        Return "White"
    End If
End Function

運算式改為:=Code.AlternateRowColor(RowNumber(Nothing))

方法二:全域變數切換法(效能更佳)

利用模組層級變數 bOddRow 追蹤奇偶狀態,避免重複計算 RowNumber。

自訂程式碼完整實作

Private bOddRow As Boolean

'*****************************************************************************
'-- 明細列顯示綠色條紋效果
'-- 呼叫方式:所有明細列文字方塊的 BackgroundColor 屬性
'-- 第一欄設定 Toggle=True,其餘欄位 Toggle=False
'*****************************************************************************
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("Black", "White", True)
其他欄位=Code.AlternateColor("Black", "White", False)

運作原理

  1. 報表渲染時逐列處理,第一欄 Toggle=True 觸發 bOddRow 翻轉
  2. 同一列其餘欄位 Toggle=False 直接讀取目前 bOddRow 狀態
  3. 確保同一列所有欄位顏色一致,跨列正確交替

比較與建議

維度方法一方法二
實作複雜度低中
效能(大量資料)每列計算 RowNumber單一布林切換,效能佳
跨群組適用性需注意範圍需重設變數
建議場景簡單報表、資料量小大量資料、生產環境
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved