2009-05-21 11 views
11

Utworzono raport jako część aplikacji języka C# za pomocą usług Reporting Services i nie mogę znaleźć funkcji, do których przyzwyczaiłem się w innych środowiskach. Sądzę, że zarówno raporty MS Access, jak i Crystal mają opcję o nazwie "Keep Together", dzięki czemu można przechowywać określone grupy danych na jednej stronie, zamiast podzielić je na dwie strony.Przechowuj grupę na jednej stronie przy użyciu Reporting Services

Jak to zrobić za pomocą usług Reporting Services 2005, gdy mój raport jest renderowany lokalnie w aplikacji C# i wyświetlany przy użyciu przeglądarki raportów .net. Zasadniczo chcę przechowywać wszystkie rekordy przez pewien rok na jednej stronie. Używam programu Visual Studio 2008.

Rok jest jedną z kolumn, a liczba wierszy w jednym roku jest zawsze mniejsza niż jedna strona. Mój raport używa tylko jednej tabeli i ma najgłębsze grupowanie według roku, a następnie inną zewnętrzną grupę według nazwy klienta.

Obecnie mogę zmieścić dwa lata danych na temat raportu, jednak jeśli dane uruchamia pół sposób przez pierwszy rok, a następnie pojawia się następujący:

Przykład:

pierwszej strony: 1/2 z 2004 roku, ponieważ dane rozpoczęła się w połowie drogi przez 04

Wszystkie 2005

pierwszej połowie 2006

Page2: Drugie półrocze 2006

Co wolałbym zrobić, to wcisnąć cały 2006 rok do drugiej strony.

Obecnie używam tabeli dla wszystkich danych w raporcie. Istnieje opcja trzymaj się razem na poziomie stołu, ale potrzebuję jednego na poziomie grupy. W tym przypadku zgrupowanie według roku.

Każda pomoc, która może być dostarczona, zostanie doceniona.

Odpowiedz

0

Problem polegał na tym, że potrzebowałem dwóch lat na stronie i nigdy nie przez pół roku, nawet jeśli określony zestaw rekordów rozpoczął się w połowie roku. Okazuje się, że nawet jeśli istnieje opcja "Trzymaj się razem" na poziomie stołu, nie ma nikogo na poziomie grupy. Potrzebowałem tej opcji na poziomie grupy. Zamiast używać formatu, zmieniłem podstawowy kod SQL dla raportu. W przypadkach, gdy istniało tylko pół roku danych, utworzyłem rekordy dla drugiej części roku z poprawnymi datami, ale zera dla wszystkich innych wartości. Oznacza to, że jeśli strona jest odpowiednio sformatowana, aby pomieścić dwa lata, zawsze będzie wyświetlać dwa pełne lata, a jeden rok nigdy nie zostanie zerwany na dwie strony.Sądziłem również, że odpowiedzi udzielone przez Mozy'ego i Johna Sansoma były dobre i głosowałem na nich obu.

Dzięki za pomoc!

2

Ok, musisz najpierw zdefiniować rozmiar strony raportu, aby był wystarczająco duży, aby objąć cały region danych.

Patrz:

http://msdn.microsoft.com/en-us/library/bb677374.aspx

Następnie należy dodać podział strony wskazuje na grupy w Matrix. Patrz poniżej:

http://msdn.microsoft.com/en-us/library/ms156434.aspx

+0

Dzięki za pomoc. Zaktualizowałem moje pytanie, aby zapewnić lepsze informacje. Strona raportu jest już wystarczająco duża, aby zmieścić się dwa lata, ale czasami dostaję pełny rok i dwa częściowe lata. Dodatkowo używam tabeli raportu zamiast macierzy. Być może muszę przełączyć się na matrycę. Dzięki jeszcze raz. –

3

Wystarczy dodać trochę do Jana odpowiedź. W przypadku usługi SSRS 2005 obiekty listy i tabeli mają właściwość KeepTogether, co oznacza, że ​​będą starały się zachować wszystko na jednej stronie. Myślę, że najlepszym podejściem jest najpierw pójście za radą Johna.

+0

Dzięki za odpowiedź. Znalazłem opcję Keep Together na poziomie stołu, ale nie na poziomie grupy. Tylko dla wyjaśnienia, nie używam matrycy, używam tabeli. Czy istnieje opcja trzymania razem na poziomie grupowania w tabeli? - Dzięki jeszcze raz. –

+0

AFAK, nie ma właściwości KeepTogether w grupie. Będziesz musiał użyć podziałów strony i znaleźć sposoby na utrzymanie swoich danych w granicach rozmiaru strony raportu (jak wspomniał John). Dla mnie w moim środowisku problemy z formatowaniem itp. Są źródłem wielu frustracji. :) – Mozy

+0

Kolejna myśl, którą możesz dodać do swojego przykładu. Gdybym to był ja, prawdopodobnie zgodziłbym się na rok i ustawiłbym podział strony po grupie roku. – Mozy

8
  1. Wstaw "Listę" do raportu.
  2. W "Właściwościach tablix" ustaw właściwość "Nazwa zestawu danych" na nazwę zbioru danych.
  3. W widoku projektu kliknij prawym przyciskiem myszy na liście, a następnie wybierz "Grupa wierszy> Właściwości grupy".
  4. W oknie "Właściwości grupy" kliknij przycisk "Dodaj" w obszarze "Wyrażenia grupowe", a następnie wybierz pole, które chcesz zgrupować na stronie.
  5. Po tym można wstawić "Tabela" dla danych szczegółowych w grupie wierszy.
  6. Po wygenerowaniu raportu raport zachowa dane wewnątrz grupy między podziałami stron.
+0

Oprócz rozwiązania powyższego problemu, technika zagnieżdżania tabeli na liście rozwiązała wiele problemów związanych z grupowaniem, takich jak ponowne drukowanie wierszy nagłówka, utrzymywanie razem dużych sekcji stopki grup itp. Dziękuję bardzo , uratowałeś mnie od wielu bólów głowy! – pseudocoder

1

Użyj elementu Prostokąt i skopiuj i wklej wszystkie elementy sterujące do niego. W oknie właściwości prostokąta tke zaznacz pole, aby zachować zawartość razem. Nie dołączaj obramowania, jeśli nie chcesz dodatkowych linii.

Posiadałem wiele elementów poza elementem macierzy potrzebnej do stopki. Chciałem je tylko na ostatniej stronie, więc nie mogłem użyć standardowej sekcji stopki. Umieszczając je w prostokącie, unikam łamania stron w środku grupy.

4

Kliknij grupę, którą chcesz zachować razem na tej samej stronie w sekcji Grupa wierszy. Po kliknięciu na wybraną grupę, w sekcji właściwości wpisz "" Łącz razem jako True ". to jest to! To zadziałało dla mnie.

+0

Jeśli masz problem ze znalezieniem ... opcja "KeepTogether" znajduje się w oknie właściwości, gdy grupa jest zaznaczona, a nie w oknie dialogowym "Group Properties" dla grupy. – track0

+0

Zabawna część, ta opcja niczego nie zmienia. – Lyra

Powiązane problemy