6

Mam raportu SSRS, który jest zepsuty do eksportu do programu Excel, gdy liczba wierszy jest większa niż limit 65536Jak dodać stronę SSRS przerwę po 65536 wierszy, licząc nagłówka grupy/stopkę

Raport już Excel 2003 ma poziom grupowania ze stopką grupy.

Próbowałem dodać dodatkowy poziom grupowania z przerwą widoku na ekspresję

=ceiling(rownumber(nothing)/65536) 

Jednak ta zlicza wiersze szczegółów, ale nie uwzględnia stopki grupy. Więc RowNumber ma wartość 53000, natomiast rzeczywista liczba wierszy przekroczyła 65536.

Poniższe wyrażenie

=ceiling(RunningValue(Fields!myfirstgroup.Value, CountDistinct, Nothing) + rownumber(nothing)/65536) 

da mi rzeczywistą liczbę wierszy w tym stopkach grupowych, ale SSRS nie pozwoli na grupę wyrażenie wartości bieżącej.

Jak wymusić podział strony po 65536 wierszy, aby zezwolić na eksport do programu Excel? Miałem nadzieję osiągnąć to w definicji raportu i unikać dodawania w zapytaniu obliczonego numeru strony.

Każda pomoc mile widziane

* AKTUALIZACJA - Przykładowe dane *

ItemDescription , Location , Quantity 

Red lorry , M25 , 5 

Red lorry , M6 , 2 

Yellow lorry , M1 , 3 

Raport ma grupowanie ItemDescription z sumy dla tej pozycji, więc pokaże

ItemDescription , Location , Quantity 

    Red lorry , M25 , 5 

    Red lorry , M6 , 2 

     Total for Red Lorry,7 

    Yellow lorry , M1 , 3 

     Total for Yellow Lorry,3 

Oznacza to, że z moich 3 rzędów danych mam 5 wierszy raportu, w tym wiersze szczegółów i stopek. Usługa SSRS może stwierdzić, ile wierszy szczegółów znajduje się w zbiorze danych, ale muszę wziąć pod uwagę stopki dla podziału strony.

+0

myślę, że można użyć zmiennej współdzielonej policzyć liczbę wierszy i umieścić go w grupie stopki. Dodaj wyrażenie, aby podzielić stronę na wspólną zmienną. –

+3

Czy możesz nam powiedzieć coś więcej o tym, dlaczego chcesz utworzyć raport zawierający ponad 65 000 wierszy, które zostaną wyeksportowane do programu Excel ORAZ zawierają grupy ze stopkami grupowymi? Czy ktoś będzie patrzył na sumy w tych stopkach? Czy możesz zamiast tego wyeksportować wiersze do pliku CSV? – Nathan

+0

Jest to wymóg klienta, aby mieć taką ilość danych w Excelu, z grupowaniem wierszy, więc to jest mój cel. Zamiast kwestionować mądrość tej prośby lub stworzyć alternatywne rozwiązanie, jestem bardziej zainteresowany znalezieniem rozwiązania problemu technicznego. – JamieA

Odpowiedz

4

Witam, ten link może ci pomóc. Miałem podobny problem, kilka lat temu.

SSRS Page break on Tablix with Rownumber ,just one row group and no group expression given by default

=Floor((RowNumber(Nothing)-1)/2000) 

była sugerowana odpowiedź

+0

Dzięki. Zapobiegnie to wystąpieniu błędu, ale jest mało wyrafinowane i może prowadzić do 2 lub 3 razy większej liczby arkuszy Excela, które są rzeczywiście potrzebne. – JamieA

+0

Nie elegancki po tym, jak byłem, ale zapobiega błędowi eksportowania Excela, więc +50. Dla przykładu, jedynym eleganckim sposobem, jaki udało mi się znaleźć, było obliczenie mojego podziału strony w SQL i dodanie grupy zgrupowań raportów. Zaskoczony, że SSRS nie ma sposobu radzenia sobie z tym – JamieA

+0

sorry @JamieA nie mogłem ci w tym pomóc. Dla prostego zbioru danych SSRS zawsze działa idealnie, ale kiedy raport staje się skomplikowany, wszystkie te małe rzeczy będą nas irytować i poświęcą czas na uporządkowanie (10 miesięcy z projektem SSRS) :( –

2

Utwórz grupę z następującym wyrażeniem: = CInt (sufitowa (RowNumber (nic)/65000))

65000 daje trochę więcej miejsca dla jakichkolwiek nagłówków i stopek. Następnie wykonaj podział strony w tej grupie "Między każdą instancją grupy" i "Również na końcu grupy", aby pomyślnie pokonać problem z limitem pliku excel.

Tego używamy zwykle bez żadnego problemu. Nie sądzę, by ktokolwiek zauważył, jeśli nie użyjesz wszystkich 65 536 wierszy.

+0

Dzięki za odpowiedź, przeprosiny tak długo trwało, aby wrócić! Jednak pytanie wyjaśnia, że ​​próbowałem już użyć podobnego wyrażenia grupującego ze spacją strony. 65000 nie daje wystarczającej ilości miejsca na nagłówki i stopki, ponieważ mój pierwszy poziom grupowania obejmuje stopkę grupy, a będę musiał wziąć pod uwagę tysiące tych stopek, które nie są wliczone w funkcję RowNumber(). – JamieA