Moduł raportów SQL

Parametryzacja systemu

Program zawiera wewnętrzny moduł raportów SQL, umożliwiający wygenerowanie dowolnego zestawienia na podstawie zapytań SQL. Jeśli do specyficznych wymagań użytkownika nie da się wykorzystać żadnego z opisanych wcześniej rodzajów zestawień (patrz Instrukcja użytkownika - Zestawienia i dokumenty) to wtedy należy skorzystać z możliwości, jakie oferuje ten moduł. Wcześniej jednak trzeba zapoznać się z podstawami języka SQL oraz wewnętrzną strukturą danych programu.

Zdefiniowane własne zestawienia SQL możemy wywołać z menu głównego Raporty - Zestawienia SQL lub uwidocznić w Oknie startowym programu.

Dostęp do definiowania reportów SQL umożliwia pozycja menu głównego Definicje - Zestawienia SQL. Nowe zestawienie wprowadzamy przyciskiem . Po zatwierdzeniu zmian w definicji możliwe jest szybkie wygenerowanie zestawienia, w celu sprawdzenia poprawności składni zapytania. Umożliwia to przycisk Wykonaj zapytanie SQL.

Przykładowe zestawienia można pobrać z internetu - służy do tego przycisk Pobierz zestawienie z serwisu HTTP - patrz Pobieranie raportów SQL. W przypadku problemów z automatycznym pobieraniem parametrów należy zwrócić uwagę ustawienia środowiska programu (menu Ustawienia - Środowisko, zakładka Internet, parametry HTTP) oraz zapór internetowych (firewall).

WIZARD

Przy tworzeniu nowego zestawienia możemy posiłkować się przykładowym zestawieniem pobranym z internetu, albo praktycznym wizardem, w którym wykorzystujemy:

Na podstawie skonstruowanego wizardu wygeneruje się wstępna definicja zestawienia. Późniejsze modyfikacje w wizardzie mogą zostać ujęte w definicji, ale wtedy utracone będą własne modyfikacje definicji. Dlatego przed szczegółową obróbką definicji zestawienia należy w miarę możliwości uwzględnić jak najwięcej elementów przy konstruowaniu wizardu.

DEFINICJA

Przy definiowaniu zapytania SQL należy kierować się następującymi wskazówkami:

1. Polecenie powinno zawierać słowo kluczowe select i nie może zawierać słów insert, update, delete - tylko w takim przypadku zestawienie będzie dostępne w menu Raporty - Zestawienia SQL.
UWAGA. W szczególnych przypadkach istnieje możliwość wykorzystania zapytania do modyfikacji bazy. Polecenia zawierające słowa insert, update, delete można wykonać bezpośrednio po zdefiniowaniu - służy do tego przycisk Wykonaj polecenie SQL. Przy wykonywaniu tego typu poleceń należy być bardzo ostrożnym - dobrze jest wcześniej zarchiwizować dane.

2. W zapytaniu można używać kontrolek {X/nazwa kontrolki}, gdzie X to typ kontrolki:
S - pole znakowe (string),
D - data (date),
I - numer (integer),
N - liczba (number, float),
L - pole logiczne.
Kontrolki to jakby zmienne parametry zestawienia wprowadzane przed jego sporządzeniem. O zawartość kontrolek program zapyta przed wykonaniem zestawienia, posługując się ich nazwą. Zawartość kontrolek typu S i D zostanie w treści zapytania automatycznie ograniczona znakami ''.
UWAGA. Kontrolki użyte w zapytaniu można dodatkowo wstawić do tytułu zestawienia. W ten sposób kryteria zestawienia mogą zostać uwidocznione na wydruku.

3. Kontrolki typu combo i checkcombo
Combo {R(Poz1=W1,Poz2=W2,...,PozN=WN)/nazwa kontrolki} - pole wyboru (z rozwijalną listą), gdzie PozN oznacza nazwę na liście, a WN zwracaną przez kontrolkę nazwę, np. {R(kobieta=1,mężczyzna=2)/Płeć}
Combo {F(TABELA,Pole)/nazwa kontrolki} - pole wyboru, którego wartościami na rozwijalnej liście będą wszystkie wartości pola Pole z tabeli TABELA, np. w tabeli KARTA ZASIŁKOWA pole R_NIEOB ma wartości 'niepłatne z tyt.nienabycia prawa do zas.', 'niepłatne inne', 'chorobowe', 'chorobowe szpitalne', itd.
Combo {T(TABELA,Pole1,Pole2)/nazwa kontrolki} - pole wyboru, na którego liście pokażą się wartości z Pole1 z wszystkich rekordów tabeli TABELA, a kontrolka zwróci wartość z pola Pole2
CheckCombo {W(TABELA,Pole1,Pole2)/} - pole wyboru z możliwością zaznaczenia kilku opcji, na którego liście pokażą się wartości z Pole1 z wszystkich rekordów tabeli TABELA, a kontrolka zwróci wszystkie zaznaczone wartości z pola Pole2 rozdzielone znakiem średnika (;).

UWAGA. Nazwy tabel i ich pól są dostępne w załączniku Lista modułów danych i tabel. Nazwa tabeli jest nazwą tabeli w aplikacji, a nie tabeli w bazie (np. UŻYTKOWNICY, a nie USERS).

4. Użycie szczególnych kontrolek C(DZIAŁY) (lub C(REJESTRY)) umożliwia przed wykonaniem zestawienia wybór zakresu działów (lub rejestrów) z odpowiedniej biblioteki. Kontrolki te zwrócą wartość X_J wybranej pozycji, która odpowiada kolejności danej pozycji.
UWAGA. Wszystkie dostępne kontrolki znajdują się pod prawym klawiszem myszy.

5. Tabele z innej bazy niż baza zawierająca dane wybranej firmy należy poprzedzić nazwą bazy (np. lista pól systemowych znajduje się w bazie zawierającej dane ogólne programu: R2P_platnik_bin.dbo.Polasys).

6. Można wykorzystać specjalne zmienne, które zostaną zamienione na: <USERIDE> - identyfikator aktualnego użytkownika, <USERNAME> - nazwa aktualnego użytkownika, <FIRMIDE> - numer aktualnie wybranej firmy, <PRACIDE> - identyfikator aktualnego pracownika, <ZATRIDE> - identyfikator aktualnego zatrudnienia, <BIN> - nazwa bazy danych ogólnych (np. <BIN>.Polasys), <DB> - nazwa bazy danych (np. <DB>_DANE_1.dbo.Pracownk).

7. W przypadku selekcji podświetlonych rekordów można wykorzystać zmienną specjalną <USERMASK>, przykładowo.:
select P.Nazwisko, P.Imie from PRACOWNK P where ({L/Tylko podświetlone}=0)or(P.X_P&<USERMASK><>0)
W pzypadku większej ilości użytkowników prawidłowy warunek na podświetlone rekordy powinien wyglądać następująco:
where ({L/Tylko podświetlone}=0)or(<BIN>.fn_Podsw(p.X_I,p.X_P,<USERIDE>,'PracownikT')=1) .

8. Znaczniki
<R>,</R> umożliwiają wyłączenie z kodu zestawienia sql fragmentów, które są odpowiedzialne za włączenie opcji Rozszerzona struktura działów, np. jeśli nie chcemy, aby podczas przygotowywania zestawienia były widoczne kontrolki oddziałów i zespołów, gdy powyższa opcja jest wyłączona, fragment kodu zestawienia odpowiedzialny za tą funkcję należy zawrzeć pomiędzy tymi znacznikami
<H>,</H> jak wyżej, tylko dotyczy opcji Włącz zapamiętywanie niektórych danych w historii.

9. W bazie danych ogólnych (BIN) znajduje się tabela KODY (<BIN>.KODY), zawieracjąca opis możliwych wartości, przyjmowanych przez przez pola typu wyliczeniowego z poszczególnych tabel. Dzięki niej można uzyskać opisową zawartość tych pól, po właściwym złączeniu tej tabeli w zapytaniu (można również wykorzystać w tym celu funkcję fn_Kod).

10. W przypadku zaszyfrowanej bazy pola zaszyfrowane należy wpisywać w konwencji <nazwa_pola.ENCRYPTED>, uzupełnienie to można pominąć w sekcji SELECT, natomiast trzeba uzupełnić we wszystkich innych (WHERE, ORDER BY, itp.) , przykładowo zapytanie:
select P.Nazwisko, P.Imie from PRACOWNK P order by P.Nazwisko, P.Imie
po zaszyfrowaniu bazy należy zamienić na:
select P.Nazwisko, P.Imie from PRACOWNK P order by <P.Nazwisko.ENCRYPTED>, <P.Imie.ENCRYPTED>

11. Można wykorzystać znajdujące się w bazie funkcje (lub zbudować własne) - patrz Funkcje i procedury składowane.

UPRAWNIENIA I PARAMETRY