Raporty Definiowane
Raporty definiowane są sposobem na szybkie uzyskanie wybranych informacji z bazy danych programu. Raporty podzielono na tematy, którym odpowiada określony zestaw tabel bazy danych. Przechodząc do definiowania nowego raportu należy wybrać interesujący temat, a następnie, dodać nową pozycję i wpisać nazwę raportu. Nazwa pojawi się na wydruku obok tematu. Kolejnym etapem definiowania raportu jest określenie kolumn na podstawie proponowanego zestawu znajdującego się o okienku listy. Kliknięcie na odpowiedni guzik ">" lub też "<" powoduje włącznie pola do raportu lub też wyłączenie. Tabela wykazu kolumn raportu umożliwia zmianę treści nagłówka, blokadę wydruku (wstawiona kolumna może być użyta wyłącznie do filtra), określenie sortowania i zdefiniowanie filtrowania danych.
Filtrowanie. Zagadnienie wyboru danych do raportu należy do najważniejszych i skuteczne ograniczanie decyduje o możliwości wykorzystania raportu. Wprowadzono następujące operatory:
" " - brak operatora - filtr jest wyłączony
Operator | pole tekstowe | pole numeryczne | pole daty |
---|---|---|---|
<< | tekst z pola zawiera się w wartości | liczba mniejsza ponad 1000 razy | data z pola o przynajmniej rok wcześniejsza |
< | tekst jest mniejszy w sensie alfabetu | liczba mniejsza | data z pola wcześniejsza |
\ | tekst jest mniejszy lub równy w sensie alfabetu | liczba mniejsza lub równa | data z pola wcześniejsza lub taka sama |
= | teksty są sobie równe | obie równe | równe daty |
# | teksty różne | obie różne | różne daty |
~ | teksty podobne (zawierają się w sobie) | wartości przybliżone do 10% | przybliżone daty |
/ | tekst większy lub równy w sensie alfabetu | liczba większa lub równa | data pola późniejsza lub taka sama |
> | tekst większy w sensie alfabetu | liczba większa | data pola późniejsza |
>> | wartość zawiera się w tekście pola | liczba większa ponad 1000 razy | data pola późniejsza ponad rok |
Budowanie filtrów złożonych polega na składaniu filtru z warunków dla wielu wybranych pól. Musimy wiedzieć, że domyślnie zakłada się spełnienie wszystkich warunków, czyli zastosowano operator logiczny "i". Jeżeli jednak istnieje potrzeba zdefiniowania filtru z zastosowaniem operator "lub", to wystarczy skorzystać z pola NF (negacja filtru) w nagłówku definicji raportu. Zaznaczenie tego pola spowoduje wybranie danych do raportu, gdy zdefiniowany filtr nie jest spełniony.
Dalej należy skorzystać ze znanej zależności:
!(a i b) = (!a lub !b), gdzie znakiem "!" oznaczono negację wyrażenia.
Przykładowo: Zadanie polega na wygenerowaniu raportu sprzedaży dla dwóch klientów o nazwach skróconych: KLIENT1 i KLIENT2. Do raportu wstawiamy dwie kolumny NAZWA_SKR i jedną z nich zaznaczamy, że ma się nie drukować. Po zdefiniowaniu pozostałych kolumn raportu pozostaje konieczność wstawienia odpowiednich warunków do filtru. Do pól zatytułowanych "Wartość" wpisujemy odpowiednio wymagane nazwy klientów oraz wybieramy operatory "#" (różny). Następnie musimy zaznaczyć pole NF w nagłówku definicji raportu. Jak widać wygląda to wszystko nieco skomplikowanie, ale to tylko pozory.
W programie księgowym powinna być możliwość wykonania raportu zawierającego sumy kwot lub zliczenie liczby pozycji. Raporty Definiowane mają taką możliwość po zaznaczeniu opcji "ZLICZ" w nagłówku raportu. Efektem raportu zliczonego jest tabela zawierająca kolumny określone jako nagłówki wierszy (nie polegają sumowaniu, ani zliczeniu), które grupują dane i kolumny zawierające sumy pól numerycznych oraz zliczone pozostałe pola. Sprawdź działanie opcji zliczania drukując raport w obu jej stanach. Wówczas wszystko stanie się jasne ;)
Szczególne przypadki zastosowania raportów definiowanych wymagają zastosowania pól wyliczeniowych. Istnieje możliwość wykorzystania w tym celu kolumny "Formuła" specyfikacji raportu. W polu tym trzeba zapisać taką formułę, która umożliwi programowi pobranie i wyliczenie wymaganej wartości. Np. zapisując tabela1->pole1- tabela1->pole2 uzyskamy pole wyliczeniowe równe różnicy pól pole1 i pole2 tabeli1. Wartość wyliczeniowa może być porównywana z wartością wpisaną zgodnie z zadanym operatorem.
Funkcje dostępne w formułach.
W formułach można stosować wszystkie podstawowe funkcje języka CLIPPER[1] i VO np.
and(wartość, arg1, arg2,...arg10) | wykonaj operacje z operatorem ".and." wartość=arg1.and.wartość=arg2.and. .and.wartość=arg10 |
Date2Text(,<odstęp>) | analogicznie j.w. tylko jeszcze usuwa separatory, np. Date2Text('2007.06.28',2) -> 2007 06 28 |
dtoc( ) | zamienia datę na tekst |
iif(<warunek>,<prawda>,<fałsz>) | zwraca odpowiednio <prawda> lub <fałsz> w zależności od spełnienia <warunek> |
int(<liczba>) | zaokrągla do liczby całkowitej poprzez odcięcie |
liczba(<nieznany_typ>) | zwraca liczbę |
ltrim(<tekst>) | odcięcie spacji z lewej strony tekstu |
lower(<tekst>) | zwraca wszystkie litery jako małe |
KursWaluty(<Rodzaj>,<Waluta>,) | zwraca kurs, parametr Rodzaj to rodzaj kursu z okna Kursy walut |
<data_tekstowa>|<nr_miesiaca>) | zwraca słownie miesiąc |
Odsetki(<Kwota>,<Termin>,<Zaplata>,<rodzaj>) | chyba jasne :) rodzaj to U lub P |
or(wartość, arg1, arg2,...arg10) | wykonaj operacje z operatorem ".or." wartość=arg1.or.wartość=arg2.or. .or.wartość=arg10
np. or(LSTSKL->TYP,'E','R','W') co jest identyczne z LSTSKL->TYP=='E'.or.LSTSKL->TYP=='R'.or.LSTSKL->TYP=='W' |
OstatniDzien(<okres>) | zwraca ostatni dzień miesiąca |
Pytaj(<treść_pytania>,<domyślna_wartość>) | zapytanie o wartość |
round(<liczba>,<dziesiąte>) | zaokrągla matematycznie do <dziesiąte> miejsc po przecinku (kropce) |
rtrim(<tekst>) | odcięcie spacji z prawej strony tekstu |
str( <liczba>, <długość>, <po kropce> ) | zwraca tekst |
StrTran(<tekst>, <szukany>, [<zamien_na>], [<nr_znaku_poczatku>], [<nr_znaku_konca>]) | zwraca <tekst> z zamienionymi znakami <szukany> na <zamien_na>, można nie stosować pozostałych parametrów |
tekst(<cokolwiek>) | zamienia <cokolwiek> na tekst bez spacji początkowych i końcowych |
Text2Text(<coś>,<odstęp>) | traktuje zwraca <coś> jako tekst ze znakami oddzielonymi spacjami w ilości <odstę>, np. Text2Text(100,5) -> 1 0 0 |
upper(<tekst>) | zwraca wszystkie litery jako duże |
val( <tekst> ) | zwraca liczbę |
Wojewodztwo(<kod_pocztowy>) | zwraca nazwę województwa |
RapSum(<nazwa_raportu>,<kolumna>,<okres>) | wartość podsumowania zapisana po zaznaczeniu "SP", <kolumna> - treść tytułu kolumny lub numer kolumny podsumowywanej (liczymy tylko kolumny z podsumowaniem), <okres> w postaci rok.miesiąc lub data |
RapZm(<nazwa_raportu>,<nazwa_zmiennej>,<wartość>) | zapis/odczyt zmiennej, <nazwa_raportu> jeśli .T., to raport bieżący, <nazwa_zminnej> - dowolny ciąg znaków, a <wartość> to liczba zapisywana do zmiennej, a gdy nie będzie tego parametru, to tylko odczyt zmiennej |
RapZmSum(<nazwa_raportu>,<lista_zmiennych>) | odczyt sumy zmiennych o nazwach z <lista_zmiennych>, np. RapZmSum(.T.,"zmienna1, zmienna3"), gdzie .T. podobnie do RapZm oznacza raport bieżący |
VG(<zmienna>) | czytaj zmienną |
VP(<zmienna>, <wartosc>) | zapisz do zmiennej |
VS(<zmienna>, <wartosc>) | zapisz do zmiennej sumę zmiennej i wartości |
Parametryzacja. W kolumnie "Wartość" można zapisać słowo kluczowe parametr, które spowoduje wywołanie okienka z zapytaniem o wartość parametru. Przewidziano zastosowanie do dziewięciu różnych parametrów oznaczonych kolejnymi cyframi, np. parametr1, parametr8.
Przykładowe raporty definiowane w programie:
Raporty definiowane umożliwiają nie tylko wydruk wybranych danych, ale również ich eksport, tak samo jak wszystkie wydruki. Eksport wykonuje się poprzez wydruk do pliku w wybranym formacie. Często stosuje się pliki z rozszerzeniem „csv” dla danych obrabianych w programie Excel lub „htm” w każdym innym, np. Open Office. Raporty definiowane tylko na początku sprawiają wrażenie trudnych w obsłudze.
Stosując odpowiednią definicję XML można eksportować i importować definicje raportów, a konkretne przykłady znajdują się w katalogu \BR\PROGRAMY\HELP i na stronie: Baza Raportów Definiowanych. Raporty mogą zawierać notatki. Notatka drukowana umieszczana jest pod zestawieniem, a notatkę nie drukowaną można wykorzystać do umieszczenia własnych informacji lub jako treść wiadomości e-mail w funkcji Raport() systemu alertowania.
- ↑ Harbour Reference Guide. [dostęp 2018-02-14]. spis funkcji w j. ang.