2. Zasady działania programu WyciągMG.


Program działa w oparciu o system bazodanowy firmy Microsoft "MS SQL Server". Podstawowe tabele w programie WyciągMG to: "WyciagNag", "WyciagPoz", "Kontrahe", "Banki", "Firma.Dbf" i dla potrzeb systemu Fk_MbG: "FkObroty", "Konta". Programy WyciągMG i Fk_MbG są ze sobą ściśle powiązane. Tabele "Kontrahe", "Rok", "Miesiące", "FkObroty" i "Konta" są wspólne dla obydwu programów.

W tabeli "Konta" zapisane są symbol i nazwa konta księgowego i stan z Bilansu Otwarcia w ramach wybranej firmy i roku bilansowego (kontrolowanego przez tabelę "Rok"). Kontrolowanie tabeli "Konta" przez tabelę "Rok" jest zrealizowane poprzez narzucenie na tabelę "Konta" ograniczenia w postaci "klucza obcego" do tabeli "Rok". Pojęciem "klucza obcego", będziemy się jeszcze wielokrotnie posługiwali w stosunku do innych tabel, więc proszę o uważne przeczytanie poniższych informacji, bo zasada działania "klucza obcego" jest zawsze podobna.

Narzucony tabeli "Konta" klucz obcy do tabeli "Rok", blokuje możliwość dodawania nowych wierszy do tabeli "Konta" z takim symbolem roku, który nie istnieje w tabeli "Rok". Podobnie nie możemy zmienić identyfikatora roku w rekordzie (wierszu) tabeli "Konta", na taki którego nie ma w tabeli "Rok". Klucz obcy tabeli "Konta" do tabeli "Rok" ma również istotne znaczenie dla tabeli "Rok". Jeśli przy definicji klucza obcego tabeli "Konta" nie zdefiniowano wprost takiej możliwości, to nie można usunąć rekordu w tabeli "Rok", jeśli dla niego istnieją wiersze w tabeli "Konta", natomiast gdy zdefiniowano taką możliwość, to usuwając wiersz tabeli "Rok", automatycznie są usuwane rekordy zależne w tabeli "Konta".
Klucz obcy tabeli "Konta" do tabeli "Rok" nie mógłby istnieć bez "klucza pierwotnego" tabeli "Rok". Klucz pierwotny tabeli "Rok" utworzony jest dla kolumn (pól): "identyfikator firmy" i "identyfikator roku". Taki klucz zapewnia, że nie da się wprowadzić do tabeli "Rok" dwóch wierszy o taki samych identyfikatorach. Pola (kolumny) wchodzące w skład klucza pierwotnego tworzą indeks, który zapewnia szybki dostęp do tabeli w przypadku żądania danych z tej tabeli uporządkowanych zgodnie z kolejnością kolumn wymienionych w kluczu pierwotnym.

W tabelach "WyciagNag" i "WyciagPoz" rejestrowane są dane niezbędne do wydrukowania wprowadzanych wyciągów w ramach wybranej firmy i roku bilansowego (kontrolowanego przez tabelę "Rok") oraz konkretnego miesiąca księgowego (kontrolowanego przez tabelę "Miesiące"). Kontrolowanie tabeli "WyciagNag" przez tabelę "Miesiące" jest zrealizowane poprzez narzucenie na tabelę "WyciagNag" ograniczenia w postaci "klucza obcego" do tabeli "Miesiące".
Tabela "WyciagNag" (nagłówek wyciągu bankowego) zawiera dane wspólne dla całego wyciągu np. symbol rachunku, datę wyciągu, nr wyciągu, saldo początkowe i końcowe. Natomiast tabela "WyciagPoz", powiązana kluczem obcym z "WyciagNag", zawiera poszczególne pozycje dokumentu np. opis operacji, symbol kontrahenta, kwota, nr faktury, konto i strona księgowania (1 = Wn lub 2 = Ma), oraz alternatywną nazwę podmiotu.

W tabeli "Kontrahe" zapisane są symbol, nazwa i adres kontrahenta oraz jego konto bankowe w ramach wybranej firmy.

Z powodu wchodzenia w skład kluczy obcych wielu tabel istotne znaczenie mają tabele: "Rok" i "Miesiące". Tabela "Rok" zawiera listę firm (identyfikatorów firm) i w ramach danej firmy, identyfikatory lat bilansowych dla obrotów programu WyciągMG i Fk_MG. Natomiast tabela "Miesiące" zawiera listę wprowadzanych miesięcy w ramach wybranej firmy i lat bilansowych programu WyciągMG. Tabela "Rok" stanowi "klucz obcy", inaczej mówiąc jest tabelą nadrzędną (albo "rodzicem"), dla tabeli "Miesiące", oznacza to, że nie można do tabeli "Miesiące", zwanej tabelą pochodną (albo "dzieckiem"), wprowadzić żadnego nowego wiersza, dla którego nie istnieje odpowiednik w tabeli "Rok", ale usuwając rekord (wiersz) w tabeli "Rok", automatycznie usuwane są odpowiednie wiersze (rekordy) w tabeli "Miesiące", bo przy definiowaniu klucza obcego ustawiono warunek "on delete cascade", tzn. "automatyczne usuwanie w tabeli pochodnej". Zarządzanie firmami i latami bilansowymi oraz miesiącami księgowymi opisano tutaj.

Wprowadzanie obrotów do tabel "WyciagNag" i "WyciagPoz" dokonujemy w ramach wybranego miesiąca księgowego i konkretnego rachunku. Wyboru miesiąca i kasy dokonujemy po wybraniu z menu [Wprowadzanie -> Wybierz miesiąc]. Najpierw wybieramy firmę i rok bilansowy, następnie jeden (z istniejących dla tej firmy i roku bilansowego) miesiąc. Wybrany w ten sposób rok, miesiąc księgowy i rachunek bankowy zostaną zapamiętane i nawet po zamknięciu programu i ponownym uruchomieniu nie ulegną zmianie, aż do kolejnej zmiany.

Na tabele "WyciagNag" narzucono ograniczenie klucza obcego na kolumny: "ident. firmy", "ident. roku" i "ident. miesiąca" z tabeli "Miesiące". Czyli tabela "WyciagNag" jest pochodną ("dzieckiem") tabeli nadrzędnej "Miesiące" ("rodzica") i jednocześnie jest tabelą nadrzędną (rodzicem) dla tabeli "WyciagPoz". W tabeli "WyciagNag" rejestrujemy symbol rachunku, numer wyciągu, datę wyciągu, saldo początkowe i saldo końcowe. Sześcioznakowy symbol kontrahenta stanowi klucz pierwotny tabeli "Kontrahe" i klucz obcy w tabeli "WyciagPoz", czyli tabela "WyciagPoz" jest także "dzieckiem" tabeli "Kontrahe" ("rodzica"). Więcej informacji będzie podana później w rozdziale: Wprowadzanie wyciągu.

Dla tabel dla których istnieje powiązanie "klucz pierwotny - klucz obcy" często definiowane jest "złączenie naturalne (wewnętrzne)". W wewnętrznym złączeniu dwóch tabel występują tylko takie rekordy, które mają takie same wartości w kolumnach na podstawie których nastąpiło złączenie.
Możliwe są również złączenia tzw. "zewnętrzne", to jest takie w których z jednej tabeli występują wszystkie żądane rekordy, a z drugiej tylko te które mają identyczną wartość w kolumnach wg których nastąpiło złączenie. W tym programie WyciągMG używane są najczęściej złączenia naturalne.

Polecenie w języku SQL definiujące złączenie dwóch lub więcej tabel może być zapisane w systemie bazodanowym pod odrębną nazwą, którą można wykorzystywać na równi z istniejącymi w systemie tabelami. Takie polecenia SQL nazywane są po angielsku "view", po polsku "widok" albo "perspektywa". Poniżej w oknie [Dodaj miesiąc / rok] pokazano wiersze widoku (jednego z wielu zdefiniowanych w programie) nazwanego "vi_Rok_Mc", który stanowi złączenie tabel "Rok" i "Miesiące".

Istniejące w katalogu programu pliki typu [*.rep] to specyfikacje wydruków - definicje raportów. Przykładowo w zbiorze Wyciagi.rep zapisano jakie informacje (skąd pobierane), w którym miejscu i jakim rozmiarze na kartce, oraz jaką czcionką będą drukowane, tak aby było możliwe wydrukowanie "Zestawienie wyciągów bankowych" za wybrany miesiąc dla wybranego rachunku bankowego.
Wszystkie raporty zdefiniowane w programie WyciągMG zostały utworzone w dostępnym na licencji GPL programie "Report Manager ver. 3.1".

Użytkownik może tym programem podejrzeć sposób w jaki utworzono raporty, aby ewentualnie utworzyć przez analogie swoje własne, które mogą dotyczyć specyficznych nieprzewidzianych przez autora zestawień. Natomiast zmian w raportach utworzonych przez autora i z nim nieuzgodnionych, użytkownik może wprowadzać jedynie na własną odpowiedzialność i ze świadomością, że może to spowodować błędne działanie dostarczonego programu.


Działaniem programu sterujemy za pomocą menu głównego i kontekstowego, oraz zdefiniowanych w programie "klawiszy skrótów". Menu główne aktywujemy, po wskazaniu wybranej pozycji, kliknięciem lewego klawisza "myszy", albo [lewym klawiszem Alt+Podkreślona litera z menu]. Lewego klawisza [Alt] używamy nie tylko dla wybrania pozycji z menu, ale także do przeskoku do określonej kontrolki (miejsca do wprowadzania danych), która ma podkreślaną literę w poprzedzającym je opisie (więcej w opisie Wprowadzania wyciągów ).
Na rysunku obok w szarym prostokącie pokazano tabelkę z menu kontekstowym, które można wywołać naciskając prawy klawisz "myszy" i następnie wskazując wybraną pozycję i ją zatwierdzając lewym klawiszem "myszy".

Klawisz skrótu w menu powyżej widoczny jest z prawej strony napisu np. [Wybierz miesiąc         Ctrl+W].

Działania wymienione w menu kontekstowym możemy wykonywać bez jego wywoływania, używając "klawiszy skrótów". Są to klawisze widoczne w tabelce menu kontekstowego po prawej stronie. Zapis [Ctrl+Shift+Z] oznacza, że naciskamy i trzymamy naciśnięte klawisze [Ctrl] i [Shift], a następnie klikamy klawisz [Z]. Klawisze [Shift], [Ctrl] i [Alt] to są klawisze, których samodzielne kliknięcie (pojedyncze krótkie naciśnięcie) nic nie znaczy, dopiero ich przytrzymane zmienia znaczenie innych klikanych klawiszy.

Proszę zwrócić uwagę, że główne menu jest różne, zależnie od tego, które okno jest aktywne. Powyżej mamy przykład menu początkowego, a obok menu powiązanego z oknem [Dodaj miesiąc / rok], które ma tylko trzy kolumny - [Dodaj     Zmień     Usuń].