Подтвердить что ты не робот

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  
4b9b3361

Ответ 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