Zmienna zawartość grupy

Dziś zadanie polega na tym, aby stworzyć parametr, który będzie decydował o rodzaju grupowania raportu. Jako przykład posłuży grupowanie wg roku, kwartału lub miesiąca.

Zatem w momencie uruchamiania raportu pojawia się pytanie o sposób grupowania i w zależności od odpowiedzi tworzy się odpowiednia grupa.

Rysunek poniżej pokazuje okno wyboru po uruchomieniu raportu.

wybór paramentru

wybór paramentru

Po pierwsze musimy utworzyć parametr. W tym celu ustawiamy się na „Eksploratorze pól„, podświetlamy „Pole parametrów” i klikamy prawym przyciskiem myszy. Pojawia się dodatkowe okno, z którego wybieramy „Nowy„.

 

nowy parametr

nowy parametr

W oknie tworzenia parametrów wstawiamy nazwę oraz wybieramy opcję „Statyczny”, a następnie w polach „Wartość” wprowadzamy wartości „Rok„, „Kwartał” oraz „Miesiąc

edycja parametrów

edycja parametrów

Klikamy „OK” i przechodzimy do edycji „Pola formuł”.  Podobnie jak poprzednio na „Eksploratorze pól„, podświetlamy „Pole formuł” i klikamy prawym przyciskiem myszy. Pojawia się dodatkowe okno, z którego wybieramy „Nowy„.

Następnie tworzymy pole, które będzie grupą w raporcie.

definicja grupy

definicja grupy

Zamieszczamy kod warunkowy, który umieszcza wartość z bazy danych (kolumnę) w zależności od wybranego parametru.

Poniżej kod:

IF {?Okres} = „Rok” THEN

Left(ToText({vw_aSprzedazProjekt.Rok}), 5)

ELSE IF {?Okres} = „Kwartał” THEN

Left(ToText({vw_aSprzedazProjekt.Kw}), 1)

ELSE

Left(ToText({vw_aSprzedazProjekt.Month}), 2)

Krótkie wyjaśnienie kodu. Jeśli wybranym parametrem był Rok, to pobieramy wartości z kolumny Rok. Jeśli „Kwartał” to właściwą kolumną jest ta oznaczona jako „Kw„. W pozostałych przypadkach, kolumną, którą wybieramy jest kolumna „Month„.

Jako że, wszystkie wartości w bazie są przechowywane jako liczby, zamieniamy je na tekst – funkcja ToText a następnie  ograniczamy długość ciągu znaków funkcją Left.

Dzięki takiemu podejściu, nie musimy tworzyć trzech grup – rok – kwartał – miesiąc. Wystarczy nam jedna.

Teraz możemy jedynie zmienić wyświetlany opis. Można zrobić to np. w ten sposób:

IF {?Okres} = „Rok” THEN

Left(ToText({vw_aSprzedazProjekt.Rok}), 5) + ” rok”

ELSE IF {?Okres} = „Kwartał” THEN

Left(ToText({vw_aSprzedazProjekt.Kw}), 1) + ” kwartał ” + Left(ToText({vw_aSprzedazProjekt.Rok}), 5) + ” roku”

ELSE

MonthName({vw_aSprzedazProjekt.Month}) + Left(ToText({vw_aSprzedazProjekt.Rok}), 5) + ” roku”

Doszła nam nowa funkcja MonthName.  Parametrem tej funkcji jest liczba, zatem nie musimy wartości pobranej z bazy konwertować na tekst.

 

 

 

Odpowiedz

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>