Raporty Definiowane

Z VatoWiki
Przejdź do nawigacji Przejdź do wyszukiwania
Wersja do druku nie jest już wspierana i może powodować błędy w wyświetlaniu. Zaktualizuj swoje zakładki i zamiast funkcji strony do druku użyj domyślnej funkcji drukowania w swojej przeglądarce.

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.

  1. Harbour Reference Guide. [dostęp 2018-02-14]. spis funkcji w j. ang.