2012-02-20 1 views
1

Почему не «ALT» (переменная используется для определения цвета строки) обновляется (см рис)SSRS «зебры» не работает, как ожидалось

Вот код:

Private Alt As Boolean 
Private cnt as integer 
Function Stripe(ByVal NewRow As Boolean, ByVal OddColor as String, ByVal EvenColor as String) As String 
    If NewRow Then 
Alt = Not Alt ' Trip the switch denoting a new row 
cnt = cnt + 1 
end if 
    If Alt Then 
     Return OddColor 
    Else 
     Return EvenColor 
    End If 
End Function 

Function getalt() as boolean 
return alt 
end function  

function getcnt() as integer 
return cnt 
end function 

здесь это код, который идет в 'цвет фона' первая колонка:

=Code.Stripe(true, "#E7E7E7", "Transparent") 

второй по N столбцов:

=Code.Stripe(False, "#E7E7E7", "Transparent") 

n.b. вам могут понадобиться, чтобы открыть изображение в другом окне, чтобы увидеть отладочный вывод - я показываю значение «CNT» и «альт» с помощью getalt & getcnt

enter image description here

+0

Можете ли вы добавить текст функции, которую вы использовали для вопроса? Я не думаю, что я бы использовал 'RowNumber (Nothing)' как в связанном примере - вместо этого я бы заменил «Nothing» на имя набора данных в двойных кавычках. –

+0

Я переписал весь вопрос с лучшими образцами –

ответ

1

Код BGColor должен быть этим в первом столбце

= IIF (code.getcnt() Mod 2, "# E7E7E7", "Прозрачный") & Code.Stripe (TRUE, "", "")

и это во 2-й ..N столбцы

= IIF (code.getcnt() Mod 2, "# E7E7E7", "прозрачный") & Code.Stripe (FALSE, "", "")

Я уверен, что код может быть прибрано :)

2

Похоже, вы делаете вещи слишком сложными. Вы можете использовать RowNumber для достижения альтернативного фона окраски, что-то вроде:

=IIF(RowNumber("YourDataset") Mod 2, "#E7E7E7", "Transparent")

Обратите внимание, что YourDataset также может быть объем, если вы используете группировку.

+0

Это не работает - вот ошибка: «Выражение BackgroundColor для текстового поля« textbox5 »имеет параметр области видимости, который недопустим для RunningValue, RowNumber или Previous. Параметр области должен должен быть установлен на строчную константу, которая равна имени содержащейся группы в матрице Tablix1 » –

+2

Хм, это странно. Что произойдет, если вместо этого вы используете RowNumber (Nothing)? –

 Смежные вопросы

  • Нет связанных вопросов^_^