RowNumber для группы в SSRS 2005
У меня есть таблица в отчете SSRS, в которой отображается только группа, а не данные таблицы. Я хочу узнать номер строки для отображаемых элементов, чтобы я мог использовать цветовой диапазон. Я попытался использовать "Rowcount (Nothing)", но вместо этого я получаю номер строки таблицы подробностей.
Мои базовые данные - это что-то вроде
ROwId Team Fan
1 Yankees John
2 Yankees Russ
3 Red Socks Mark
4 Red Socks Mary
...
8 Orioles Elliot
...
29 Dodgers Jim
...
43 Giants Harry
Моя таблица, показывающая только группы, выглядит следующим образом:
ROwId Team
2 Yankees
3 Red Socks
8 Orioles
29 Dodgers
43 Giants
Я хочу, чтобы он выглядел как
ROwId Team
1 Yankees
2 Red Socks
3 Orioles
4 Dodgers
5 Giants
Ответы
Ответ 1
Вы можете сделать это с помощью выражения RunningValue, что-то вроде:
=RunningValue(Fields!Team.Value, CountDistinct, "DataSet1")
DataSet1
- имя базового набора данных.
Рассмотрим данные:
![enter image description here]()
Создание простого отчета и сравнение подходов RowNumber
и RunningValue
показывает, что RunningValue
дает требуемые результаты:
![enter image description here]()
Ответ 2
Вы можете легко достичь этого с помощью немного vbcode. Перейдите в Report - Properties - введите код и введите что-то вроде:
Dim rownumber = 0
Function writeRow()
rownumber = rownumber + 1
return rownumber
End Function
Затем в вашей ячейке вызовите эту функцию, используя =Code.writeRow()
Как только вы начинаете использовать группы внутри таблиц, функции RowNumber и RunningGroup начинают получать некоторые странные поведения, поэтому проще просто написать немного кода, чтобы делать то, что вы хотите.
Ответ 3
Я не уверен, что все предложенные выше предложения являются единым для всех решений. Мой сценарий: у меня есть группа, которая имеет несколько столбцов. Я не мог использовать согласованное решение RunningValue, потому что у меня нет единственного столбца для использования в функции, если я не объединю (скажем, вычисленный столбец) их все, чтобы сделать единственный уникальный столбец.
Я не мог использовать функцию кода VBA по той же причине, и мне приходилось использовать одно и то же значение для нескольких столбцов и нескольких свойств, если только я не использую некоторые другие виды умений, если бы я знал, что количество применений (скажем, N столбцов * M-свойств), тогда я мог обновлять RowNumber только при каждом вызове NxM, но я не мог видеть функцию столбцов count, поэтому, если бы я добавил столбец, мне также нужно было бы увеличить константу N. Я также не хотел добавлять новый столбец, также предлагаемый моей группе, поскольку я не мог понять, как скрыть его, и я не мог написать систему vba, где я мог бы вызвать функцию A, которая ничего не возвращает, но обновляет значение (т.е. Называется только один раз для каждой строки группы), затем вызовите другую функцию GetRowNumber, которая просто возвращает переменную rownumber, поскольку раскраска была выполнена перед вызовом, поэтому у меня всегда был один столбец из синхронизации с остальными.
Мои другие 2 решения, о которых я мог подумать, помещают объединенный столбец, как упоминалось ранее в самом запросе, или используют DENSE_RANK и сортируют по всем столбцам группы, т.е.
DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber
Ответ 4
здесь ясно написано: область не может быть выражением. область должна быть содержащей область. Типичными областями, от самых внешних до самых внутренних, являются набор данных отчета, область данных, группы строк или группы столбцов.
например: = IIF (RowNumber ("SalesTerritoryGroup111rowgroup") Mod 2 <> 1, "White", "Khaki")
Ответ 5
Dim rownumber = 0
Function writeRow()
rownumber = rownumber + 1
return rownumber
End Function
приведенный выше код не работает при экспорте отчета в формате PDF