9

Mam tabelę w raporcie SSRS, który wyświetla tylko grupę, a nie szczegóły tabeli. Chcę znaleźć numer wiersza dla wyświetlanych elementów, aby móc użyć kolorowania. Próbowałem użyć "Rowcount (Nothing)", ale zamiast tego otrzymuję numer wiersza tabeli szczegółów.Numer wiersza dla grupy w SSRS 2005

Mój bazowy danych jest coś

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 

Moja tabela pokazuje tylko grupy wygląda następująco:

ROwId Team 
2  Yankees 
3  Red Socks 
8  Orioles 
29  Dodgers 
43  Giants 

chcę, żeby wyglądać

ROwId Team 
1  Yankees 
2  Red Socks 
3  Orioles 
4  Dodgers 
5  Giants 

Odpowiedz

28

Można to zrobić za pomocą wyrażenia RunningValue, coś takiego:

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

DataSet1 jest nazwą podstawowego zestawu danych.

Rozważmy dane:

enter image description here

Tworzenie prostego raportu i porównując RowNumber i RunningValue podejścia wynika, że ​​RunningValue daje swoje wymaganych wyników:

enter image description here

+0

, która działała świetnie. Dziękuję bardzo. – FistOfFury

6

można łatwo osiągnąć to przy pomocy odrobiny vbcode. Idź do sprawozdania - Właściwości - kod i wpisać coś takiego:

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

wtedy na swojej komórce, wywołać tę funkcję za pomocą =Code.writeRow()

Jak najszybciej rozpocząć korzystanie z grup wewnątrz tabel, funkcje RowNumber i RunningGroup zacznij robić dziwne zachowania, dlatego łatwiej jest po prostu napisać trochę kodu, aby zrobić to, co chcesz.

+0

Ten jest świetny, moim zdaniem lepszy niż działająca wartość –

0

nie jestem przekonany wszystko powyższe sugestie są rozwiązaniem dla wszystkich rozwiązań. Mój scenariusz to grupa, która ma wiele kolumn. Nie mogłem użyć uzgodnionego rozwiązania RunningValue, ponieważ nie mam jednej kolumny do użycia w funkcji, chyba że połączę (powiedzmy kolumnę komputerową) wszystkie, aby utworzyć pojedynczą unikalną kolumnę.

Nie mogłem używać funkcji kodu VBA, ponieważ jest z tego samego powodu i musiałem użyć tej samej wartości w wielu kolumnach i wielu właściwościach, chyba że używam innego rodzaju sprytów, gdybym znał liczbę używa (powiedz N kolumn * M własności), a następnie mogłem aktualizować tylko numer wiersza na każdym wywołaniu NxM, jednak nie widziałem żadnej funkcji zliczania kolumn, więc jeśli dodałem kolumnę, również potrzebowałbym zwiększyć moją stałą N. Nie chciałem też dodawać nowej kolumny, która również zasugerowała mojemu grupowaniu, ponieważ nie mogłem wymyślić, jak to ukryć i nie mogłem napisać systemu vba, w którym mógłbym wywołać funkcję A, która zwraca tylko aktualizację wartości (np. tylko jeden raz na wiersz grupy), a następnie wywołaj inną funkcję GetRowNumber, która po prostu zwraca zmienną rownumber, ponieważ kolorowanie zostało wykonane przed wywołaniem, więc zawsze miałem jedną kolumnę zsynchronizowaną z resztą.

Moje jedyne dwa rozwiązania, o których mógłbym myśleć, to umieszczenie połączonej kolumny, jak wspomniano wcześniej w samym zapytaniu, lub użycie parametru DENSE_RANK i sortowanie na wszystkich kolumnach grupy, tj.

DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber 
Powiązane problemy