#

# Własne raporty SQL

Powrót do Pomocy

- Wstęp

- Uruchamianie raportów przez drzewko nawigacji

- Struktura bazy danych MMEX

- Skrypty SQL (wprowadzenie)

#
Wstęp

Własne raporty SQL pozwalają użytkownikowi tworzyć unikatowe raporty odpowiadające jego potrzebom. Można to osiągnąć pisząc własny skrypt SQL, który komunikuje się wprost z bazą danych i jest następnie dodany do drzewka nawigacji MMEX.

Okienko menedżera własnych raportów SQL posiada następujące funkcje:

Tytuł raportu - Pole tekstowe | Używa się go do nadania skryptowi tytułu, który jest następnie wyświetlany w drzewku nawigacji.
Nagłówek - Pole wyboru | Nagłówek może być dodany bez powiązanego skryptu. Pozycja menu posiada powiązany skrypt. Kiedy jest zaznaczone: Pozwala na użycie tytułu jako nagłówka w drzewku nawigacji.
Podkategoria - Pole wyboru | Kiedy jest zaznaczone: Drzewko nawigacji ustawi tytuł jako podkategorię pod poprzednią pozycją menu. Pozycja menu niekoniecznie musi być nagłówkiem.
Skrypt źródłowy SQL - Pole tekstowe | W tym polu należy wpisać treść skryptu.
Wczytaj - Przycisk | Wczytuje z pliku wskazany, istniejący skrypt.
Zapisz - Przycisk | Zachowuje zmiany wprowadzone do skryptu.
Uruchom - Przycisk | Pozwala na wykonanie skryptu bez zamykania okna menedżera. Uwaga: Błędy w skrypcie mogą być powodem utraty wszystkich nie zapisanych uprzednio zmian.
Wyczyść - Przycisk | Czyści pole wpisywania źródłowego skryptu SQL.
Zamknij - Przycisk | Zamyka okno menedżera bez zapisywania. To sposób na anulowanie okna menedżera.

Po utworzeniu skryptu i zachowaniu go, odpowiadający mu raport może być łatwo dostępny poprzez panel drzewka nawigacji MMEX.

Tworzenie nowego własnego raportu SQL odbywa się przez wybór:

- Pozycji w menu: Narzędzia –> Własne raporty SQL

- Odpowiedniej ikonki na pasku narzędzi.

Spowoduje to otwarcie Menadżera własnych raportów SQL i umożliwi uzytkownikowi bezpośrednie wpisanie skryptu i zapisanie go jako pliku.

Użyteczne skrypty SQL są także dostępne na internetowym forum programu MMEX. Forum to można wywołać:

- Używając pozycji menu: Pomoc –> Raportuj błędy

- Przeszukaj tematy w bloku: Custom SQL Report Scripts

Zalecenia:

- Nadawaj użyteczne nazwy tworzonym skryptom.

- Zapisuj skrypt przed uruchomieniem go w Menadżerze własnych raportów SQL.
  Uwaga: Błędy skryptu mogą spowodować jego utratę jeżeli nie jest uprzednio zapisany.

- Użyj menu podręcznego w drzewku nawigacji do rozpoczęcia edycji skryptu.

Uwaga: | Wszystkie tytuły skryptów są zapisywane w pliku indeksu o tytule: CustomSQLReportIndex.txt
| Własne raporty SQL mogą zostać usunięte przez skasowanie pliku indeksu.
| Reporty mogą zostać przeorganizowane przez bezpośrednią modyfikację pliku indeksu.

Do spisu treści | Powrót do Pomocy

#
Uruchamianie raportów przez drzewko nawigacji

Raporty utworzone przez Menedżera własnych raportów są na stałe zapisane w drzewku nawigacji. Raport otrzymuję nazwę w momencie jego zapisu. Używając tej nazwy, użytkownik może:

- Uruchomić raport

- Edytować raport

- Usunąć raport.

Tytuł raportu może być zapisany bez połączonego z nim skryptu SQL. Jest to używane do tytułowania grup skryptów. Wówczas drzewko nawigacji zachowuje się podobnie do standardowych raportów. Raporty mogą być zagnieżdżone tylko do jednego poziomu wgłąb.

Do spisu treści | Powrót do Pomocy

#
Struktura bazy danych MMEX

Aby tworzyć skrypty, należy dobrze zrozumieć wewnętrzną strukturę bazy danych. Struktura ta jest przedstawiona poniżej:

Podstawowa struktura pliku danych MMEX

Tabela informacyjna

Ten obrazek przedstawia nazwy tabel wraz z ich polami oraz linki, które łączą tabele za pomocą podstawowego pola indeksu tabeli.

Nazwy tabel | Opis tabel
InfoTable_V1 | Zawiera ustawienia specyficzne dla bazy danych.
CurrencyFormats_V1 | Zawiera sposób formatowania waluty dla bazy danych.
AccountList_V1 | Zawiera nazwy wszystkich kont i dane specyficzne dla konta.
Payee_V1 | Zawiera wszystkich beneficjentów oraz ostatnią kategorię użytą przez danego beneficjenta.
Category_V1 | Jest to lista wszystkich kategorii w bazie danych.
SubCategory_V1 | Jest to lista wszystkich podkategorii w bazie danych.
CheckingAccount_V1 | Jest to główna tabela, w której utrzymywane są wszystkie transakcje.
SplitTransactions_V1 | Zawiera wszystkie dane związane z podzielonymi transakcjami (z opcją 'Podział')

Tabele nie pokazane na diagramie |
Stock_V1 | Używana dla 'Akcji i papierów wartościowych' i jest połączona z tabelą: AccountList_V1 z użyciem pola 'HeldAt'
Assets_V1 | Zawiera szczegóły Środków trwałych
BudgetYear_V1 | Szczegóły roku budżetowego
BudgetTable_V1 | Szczegóły budżetu
BudgetSplitTransactions_V1 | Podzielone transakcje dla budżetowania
BillDeposit_V1 | Zawiera wszystkie detale 'Transakcji powtarzanych'. Podobna do tabeli: CheckingAccountV1

Do spisu treści | Powrót do Pomocy

Scripty SQL (wprowadzenie)

Próba nauczenia programowania SQL wykracza poza zakres tego pliku pomocy do programu, ale poniżej zamieszczono krótki przewodnik do zrozumienia skryptów, który może wystarczyć to stworzenia własnych, prostych skryptów.

W czasie tworzenia skryptu, główną komendą, którą będziemy używać będzie SELECT.

Podstawowy format to:

SELECT <nazwa> | <nazwa> reprezentuje nazwy pól tabeli, lub * dla wszystkich nazw.
FROM <tabela> | <tabela> reprezentuje tabelę lub tabele, które są celem komendy.
WHERE <warunek jest spełniony> | [opcjonalnie] tu testujemy niektóre warunki.
ORDER BY <parametr> | [opcjonalnie] sortowanie wyjścia poprzez ten parametr

Przykłady:

SELECT * FROM AccountList_V1;
* Wyświetli wszystkie pola tabeli: AccountList_V1

SELECT AccountName, Status FROM AccountList_V1 where AccountType = “Term”;
* Wyświetli nazwy Kont terminowych i ich status z tabeli: AccountList_V1

Tu opis bardziej złożonego skryptu:

Chociaż ten skrypt jest bezużyteczny, obrazuje niektóre podstawowe zasady.
select pT.PayeeName payee, cT.CategName, scT.SubCategName from payee_v1 pT, category_v1 cT, subcategory_v1 scT where pT.categID = cT.categID and pT.subCategID = scT.subCategID order by payee

W tym przykładzie widzimy, że nazwa tabeli to: payee_V1 a nazwa pola to PayeeName

W członie FROM widać nazwę tabeli: payee_V1 pT
* znaki pT na końcu działają jako alias dla nazwy tabeli.

Teraz w komendzie SELECT widzimy: pT.PayeeName payee
* pT. jest tu użyte do określenia tabeli zawierającej pole PayeeName
* payee na końcu komendy, jest aliasem dla kombinacji: table.fieldname (tabela.nazwapola)
Możemy oddzielić nazwy tabel i pól przecinkami, jeżeli komenda obejmuje więcej tabel i pól – jak w przykładzie.

W poleceniu WHERE widać: pT.categID = cT.categID
* Jest to test upewniający nas, że te dwa pola są takie same w obydwu tabelach.

Teraz w komendzie ORDER BY, można użyć uproszczonej nazwy payee, którą zdefiniowaliśmy w poleceniu SELECT.

Mam nadzieję, że ten krótki wstęp pozbawi skrypty aury tajemniczości i efekty tego będzie można zobaczyć na Forum MMEX w sekcji Custom SQL Report Scripts.

Do spisu treści | Powrót do Pomocy