9

У меня есть таблица в отчете SSRS, в которой отображается только группа, а не данные таблицы. Я хочу узнать номер строки для отображаемых элементов, чтобы я мог использовать цветовой диапазон. Я попытался использовать «Rowcount (Nothing)», но вместо этого я получаю номер строки таблицы подробностей.RowNumber для группы в SSRS 2005

Мои исходные данные что-то вроде

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 

ответ

28

Вы можете сделать это с выражением RunningValue, что-то вроде:

=RunningValue(Fields!Team.Value, CountDistinct, "DataSet1") 

DataSet1 быть имя основного набора данных.

Рассмотрим данные:

enter image description here

Создание простого отчета и сравнения RowNumber и RunningValue подходов показывает, что RunningValue дает свои требуемые результаты:

enter image description here

+0

, которая отлично поработала. Огромное спасибо. – FistOfFury

6

Вы можете легко достигните этого с помощью немного vbcode. Перейти к отчету - Свойства - код и ввести что-то вроде:

Dim rownumber = 0 
Function writeRow() 
    rownumber = rownumber + 1 
    return rownumber 
End Function 

Тогда на вашей камере, вызвать эту функцию с помощью =Code.writeRow()

Как только вы начнете использовать группы внутри таблиц, функции ROWNUMBER и RunningGroup начните получать некоторые странные поведения, таким образом, проще просто написать немного кода, чтобы делать то, что вы хотите.

+0

Это замечательно, на мой взгляд, лучше, чем текущая стоимость –

0

Я не уверен, все предложения, приведенные выше, являются единым для всех решений. Мой сценарий: у меня есть группа, которая имеет несколько столбцов. Я не мог использовать согласованное решение RunningValue, потому что у меня нет единственного столбца для использования в функции, если я не объединю (скажем, вычисленный столбец) их все, чтобы сделать единственный уникальный столбец.

Я не мог использовать функцию кода VBA по той же причине, и мне приходилось использовать одно и то же значение для нескольких столбцов и нескольких свойств, если только я не использую какие-либо другие умения, если бы я знал количество использует (скажем, N столбцов * свойства M), тогда я мог только обновлять RowNumber для каждого вызова NxM, но я не мог видеть функцию столбцов count, поэтому, если бы я добавил столбец, мне также нужно было бы увеличить мою константу N. Я также не хотел добавлять новый столбец, также предлагаемый моей группе, поскольку я не мог понять, как скрыть его, и я не мог написать систему vba, где я мог бы вызвать функцию A, которая ничего не возвращает, но обновляет значение (т. Е. Называется только один раз для каждой строки группы), затем вызовите другую функцию GetRowNumber, которая просто возвращает переменную списка, поскольку раскраска была выполнена перед вызовом, поэтому у меня всегда был один столбец, не синхронизированный с остальными.

Мои единственные другие 2 решения, о которых я мог подумать, помещают комбинированный столбец, как упоминалось ранее в самом запросе, или используют DENSE_RANK и сортируют по всем столбцам группы, т. Е.

DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber 
Смежные вопросы