CAL Access 3 zajęcia 6 Raporty Raporty pozwalają nam wydrukować stan danych w określonym momencie czasu. Nadają się dzięki temu do wszelkiego rodzaju zestawień i sprawozdań. Nie można ich natomiast wykorzystać do zmiany stanu bazy danych tak, jak to było w przypadku formularzy. Wyższość raportów nad formularzami, gdy chodzi o tworzenie sprawozdań (wszak formularze też można drukować), wynika z dodatkowych możliwości grupowania danych, obliczania sum częściowych i globalnych oraz innych cech, których formularze nie posiadają. Poza tym raport operuje zbiorczo na wszystkich wierszach obiektu źródłowego, a nie na pojedynczych tak jak formularz. Raporty opieramy na kwerendach. Należy to przyjąć jako zasadę, nawet jeśli nie będziemy określać żadnych kryteriów wyszukiwania. Umożliwi nam to w każdej chwili łatwą modyfikację zakresu wyświetlanych rekordów lub wyświetlenie tych rekordów, które spełniają kryteria kwerendy. Utwórz raport - sprawozdanie ze sprzedaży produktów w ramach poszczególnych kategorii - korzystając z kreatora raportów Raport powinien zawierać numery faktur wraz z datami i wartościami dla produktów z poszczególnych kategorii, pogrupowane według tychże kategorii. Każda grupa ma być podsumowana. Cały zaś raport niech wieńczy wartość sprzedaży ogółem. Potrzebne dane to nazwa kategorii, numer faktury (w tym celu wykorzystać identyfikator zamówienia), data sprzedaży i wartość każdej pozycji produktu na fakturze (wykorzystać cenę i ilość dodać kolumnę WartośćZamówienia). Aby je zebrać, najpierw konstruujemy kwerendę opartą na podstawowych tabelach Zamówienia, Szczegóły zamówień, Produkty i Kategorie. Zapisz Kwerendę pod dowolną znaczącą nazwą (np. DlaRaportu) Menu Wstaw/ Raport. Z rozwijanej listy w polu dialogowym Nowy raport wybierz nazwę właściwej kwerendy. Z drugiej listy w tym polu wybierz pozycję Kreator raportów. Wybierz odpowiednie pola z obiektu źródłowego, które będą umieszczone na raporcie. Kreator pozwala wybrać pola z kilku obiektów (tabel i/lub zapytań). Wybierz poziomy grupowania. Jeśli chcemy pogrupować sprzedaż według kategorii trzeba wskazać na liście pól nazwę NazwaKategorii i kliknąć przycisk >. Można ustalić kilka poziomów grupowania, np. możliwe jest pogrupowanie sprzedaży według kategorii, a następnie, w ramach każdej z nich, na sprzedających. Dostępny w tym polu przycisk Opcje grupowania pozwala ustalić przedziały grupowania, które zależą od typu danych w polu grupującym. Opisy kategorii towarów są tekstami - grupowanie odbywa się po całej nazwie. Czasem jednak wygodnie jest pogrupować wartości tekstowe biorąc jedynie kilka pierwszych znaków, a nawet tylko pierwszy z nich. W ten sposób uzyskujemy grupowanie według alfabetu. Dla danych liczbowych grupowanie może odbywać się w przedziałach o określonej wartości. Ustal, jak mają być sortowane wiersze w grupach. Wybierz sortowanie pól w porządku rosnącym lub malejącym. Dostępny w polu przycisk Opcje sumowania umożliwia ustalenie sposobu sumowania wartości pól liczbowych w grupach. Po kliknięciu przycisku pojawia się pole dialogowe, w którym dla każdego
pola liczbowego wybieramy funkcję agregującą, a za pomocą dodatkowych opcji decydujemy, czy wartości liczbowe będą wyświetlane w każdym wierszu i dodatkowo w podsumowaniu, czy tylko w podsumowaniu, oraz czy ma zostać obliczony procentowy udział sumy każdej grupy w sumie całkowitej. W naszym przypadku dla pola Wartość sprzedaży wybieramy funkcję Suma i włączamy opcję liczenia procentowych udziałów sprzedaży w ramach każdej kategorii w globalnej sprzedaży. Wybierz układ danych na raporcie, tzn. krój czcionki i sposób przedstawienia danych. Zapisz raport pod wybraną nazwą Raport oglądamy w trybie podglądu wydruku, natomiast w trybie projektowania możemy dokonać zmian zarówno w wyglądzie raportu, jak i w sposobie grupowania i agregowania wyświetlanych danych. Przełączeniu w tryb projektowania, podobnie jak dla formularzy, służy polecenie Widok\Projekt z menu Widok. Struktura raportu jest dość rozbudowana i zawiera wiele sekcji. Nagłówek i Stopkę raportu, Nagłówek i Stopkę strony a ponadto nagłówek i stopkę grupy danych Kategoria - nagłówek/stopka oraz zasadniczą sekcję raportu, czyli Szczegóły. Wartości sumaryczne dla grupy obliczane są poprzez funkcję Suma w polu tekstowym znajdującym się w stopce grupy danych. Globalna suma obliczana jest w polu tekstowym w stopce raportu. Może się zdarzyć, że tekst danych w polach tekstowych zostanie obcięty (po prostu nie zmieści się w ramce). Problem ten rozwiązujemy w jeden z dwóch możliwych sposobów. Pierwszy to zwiększenie szerokości pól tekstowych jak się da najbardziej, tak by zmieściły się w nim jak najdłuższe teksty. Rozwiązanie alternatywne to włączenie atrybutu Można powiększać. Ustawienie to powoduje na wydruku dynamiczne dostosowanie wielkości pola tekstowego do jego zawartości - tekst zostanie złamany i wyświetlony w kilku wierszach. Sortowanie i grupowanie danych Aby otrzymać przejrzyste wydruki danych przechowywanych w bazie, konieczne jest ich uporządkowanie według określonego klucza. Struktura takiego uporządkowania może być wielopoziomowa. Przykładem może być pogrupowanie wartości sprzedaży według kategorii produktów, według daty sprzedaży lub według zakresu dat, np. wartości sprzedaży z danego tygodnia. Każdą grupę danych można teraz scharakteryzować pewną wartością zbiorczą, np. sumą. Innym przypadkiem uporządkowania danych jest ich sortowanie, które jest niczym innym jak ustawieniem danych w określonej kolejności. Samo jednak posortowanie danych nie prowadzi do wyodrębnienia z nich jakichkolwiek grup. Raporty, jako obiekty przeznaczone do tworzenia sprawozdań i wszelkiego rodzaju zestawień, zostały wyposażone w specjalne możliwości sortowania i grupowania danych. Grupowanie danych w raportach wygląda trochę podobnie jak w kwerendach podsumowujących, gdzie aby pogrupować wiersze według wartości jednego lub kilku pól, używaliśmy funkcji Grupuj według. Ustalenie sposobu grupowania oraz sortowania danych w raporcie odbywa się w polu dialogowym Sortowanie i grupowanie, otwieranym przyciskiem na pasku narzędzi lub poleceniem o tej samej nazwie z menu Widok. Otwórz w widoku Projekt raport stworzony w poprzednim przykładzie. Wybierz menu Widok/ Sortowanie i grupowanie.
Wywołane pole dialogowe składa się z dwóch części, górnej, zawierającej nazwy pól (lub wyrażenia) w kolumnie Pole/Wyrażenie oraz sposób sortowania w kolumnie Porządek sortowania i dolnej, nazwanej Właściwości grupy. Wpisanie nazwy pola i wybór sposobu sortowania powodują odpowiednie uporządkowanie wartości tego pola w raporcie. Aby podzielić dane na grupy, trzeba użyć nagłówka zawierającego wartości pola grupującego lub stopki zawierającej podsumowanie wartości w danej grupie. W pierwszym utworzonym raporcie dane zgrupowane są według kategorii sprzedawanych produktów, czego wynikiem są dwie dodatkowe sekcje widoczne w projekcie raportu: NazwaKategorii nagłówek i NazwaKategorii stopka. Nazwa grupy to nazwa pola, według którego grupowane są dane. W nagłówku grupy znajduje się pole tekstowe zawierające wartości pola Kategoria, w stopce zaś pole z wyrażeniem sumującym wartości pola WartośćZamówienia i drugie, z odwołującym się do wartości pierwszego, wyrażeniem obliczającym procentowy udział wartości sprzedaży w danej kategorii w kwocie całkowitej. =Suma([WartośćZamówienia])/([WartośćZamówienia Suma końcowa Suma]) Wartość pola zawierającego podsumowanie sprzedaży ze stopki raportu dostępna jest na poziomie dowolnej grupy. W rezultacie dostajemy w raporcie listę grup oznaczonych opisami kategorii produktów z podsumowaniem każdej grupy. Atrybuty Grupuj według i Trzymaj razem pozwalają ustalić sposób grupowania. Pierwszy z nich, określa sposób grupowania w zależności od typu danych pola grupującego. Dla większości typów danych dostępne jest ustawienie Każda wartość, powodujące grupowanie według tych samych wartości danych z pola grupującego. (Ustawienie to zostało wykorzystane przez kreatora w naszym przykładzie, gdzie grupy tworzone są przez wiersze o identycznych wartościach pola NazwaKategorii).
Dla danych typu tekstowego możliwe jest także grupowanie według Pierwszych znaków. Liczbę znaków, które mają być brane pod uwagę przy grupowaniu, należy wpisać w rubrykę atrybutu Interwał grupowania. Może się to przydać przy grupowaniu danych według alfabetu (dane na literę A, B...), wtedy Interwał grupowania wynosi 1, lub przy grupowaniu danych według identyfikatorów składających się z ciągu znaków, z których kilka pierwszych jest identycznych. Dane typu liczbowego można pogrupować według przedziału, którego długość określona jest wartością atrybutu Interwał grupowania. Gdy wynosi ona np. 100, dane grupowane są w przedziałach od 0 do 99, od 100 do 199 itd. Ostatni atrybut grupy to Trzymaj razem, a jego wartości to: Nie, Całą grupę i Z pierwszym szczegółem. Atrybut ten dotyczy drukowania grupy z uwzględnieniem podziału na strony. Normalnie jest on wyłączony, więc koniec strony może pojawić się w dowolnym miejscu grupy. Wartość Całą grupę wymusza przechodzenie do nowej strony zawsze, gdy na poprzedniej grupa nie mieści się w całości, to jest razem z nagłówkiem i stopką. Kiedy grupa jest zbyt duża, by zmieścić się na jednej stronie, ustawienie to jest ignorowane. Trzecia wartość pozwala zabezpieczyć się przed pozostawieniem na kończącej się stronie nagłówka grupy bez jednego choćby wiersza danych należącego do tej grupy. Access pozwala grupować dane według wartości wielu pól lub wyrażeń jednocześnie. W ten sposób możemy wewnątrz każdej grupy określonej przez kategorię produktów wyodrębnić podgrupy, np. ze względu na datę sprzedaży, a te z kolei podzielić według wartości sprzedaży. Obliczenia w raportach Podobnie jak formularze, raporty również mogą zawierać pola wyliczeniowe. Źródłem danych w takim przypadku jest wyrażenie, a nie pole tabeli lub zapytania źródłowego. Zasady przypisywania formantom wyrażeń są identyczne jak w formularzach. Wpisujemy je jako wartość atrybutu Źródło formantu, zaczynając zawsze od znaku równości =. Najistotniejszą rolę w przypadku raportów odgrywają obliczenia z użyciem funkcji agregujących, najczęściej funkcji sumowania. Dzięki opisanym powyżej możliwościom grupowania danych raporty pozwalają na obliczanie sum częściowych dla każdej grupy danych. Aby obliczyć taką sumę częściową, należy uaktywnić stopkę grupy danych (włączyć atrybut Stopka grupy w polu Sortowanie i grupowanie) i umieścić w niej pole tekstowe z wyrażeniem sumującym, np. =Suma([Kwota]). Pole wyliczeniowe z wyrażeniem sumującym umieszczone w stopce raportu obliczy sumę globalną. Oprócz sumowania globalnego i w grupach możemy także obliczać sumy bieżące, których wartości uwzględniają sumy częściowe kolejnych grup.
Jako przykład zastosowania weźmy ewidencję sprzedaży. Oprócz podsumowania wartości sprzedaży za każdy dzień chcielibyśmy także znać wartość sprzedaży, powiedzmy od początku bieżącego miesiąca. Ta ostatnia liczba to właśnie suma bieżąca (krocząca), zmieniająca się każdego dnia. Możliwości kumulatywnego sumowania danych w polu tekstowym zależą od ustawienia, dostępnego tylko dla pól tekstowych w raportach, atrybutu Suma bieżąca. Atrybut ten jest standardowo wyłączony, ale może też przyjmować wartość W grupie lub Wszędzie. Otwórz raport zestawiający sprzedaż według kategorii. Umieść w stopce każdej grupy duplikat pola z sumą częściową i zmień mu ustawienie atrybutu Suma bieżąca na Wszędzie. Uwaga: dla pierwszej grupy wartości obydwu pól w stopce będą równe, dla ostatniej wartość w polu z sumą kroczącą powinna być równa wartości globalnej w stopce raportu. Ponumeruj automatyczne wiersze w raporcie wykorzystując atrybut Suma bieżąca: Umieść na blankiecie raportu w sekcji Szczegóły pole tekstowe zawierające wyrażenie =1. Normalnie, dla każdego wiersza danych raportu w polu takim wyświetlona zostałaby jedynka. Jednak włączenie atrybutu Suma bieżąca spowoduje, że w kolejnych wierszach raportu pojawią się kolejne liczby 1, 2, 3... Gdy sumowanie przeprowadzane jest po grupie, wówczas numeracja przeprowadzana jest oddzielnie dla każdej grupy. Na każdym raporcie można umieścić gotowe pola wyliczane wykorzystując polecenia Numery stron i Data i Godzina z menu Wstaw.