Spis treści
3.1. Instalacja serwera baz danych
3.2. Instalacja środowiska Javy
3.3. Sprawdzanie poprawności instalacji Javy
3.4. Ustawianie Java dla OpenOffice.org
3.5. Instalacja sterownika JDBC
4. Ustanawianie połączeń do bazy danych
5.2. Wprowadzanie danych do tabel
5.2.1. Dodawanie i konfiguracja formularza
5.2.2. Wstawianie i konfiguracja obiektów formularza
5.2.3. Wprowadzanie i modyfikacja danych
W dokumencie przedstawiono możliwości wykorzystania pakietu OpenOffice.org oraz serwera baz danych MySQL jako alternatywy dla MS Access. W przeciwieństwie do poprzednich opracowań, które można znaleźć w Internecie, autor nie poprzestał tylko na opisie konfiguracji połączenia OOo oraz MySQL. W opracowaniu można odnaleźć również sposób tworzenia tabel, wprowadzania, przeglądania oraz modyfikacji danych. Cały interfejs do bazy danych oparty został na formularzach. Umożliwia to jego wykorzystanie również przez użytkowników nie posiadających wiedzy w zakresie relacyjnych baz danych. Jako podstawa do opisu posłużyło wykonanie projektu systemu zarządzania hurtownią.
Jedną z wad wymienianych na niekorzyść programu OpenOffice.org jest brak narzędzi do obsługi baz danych. Z opinią tą można się spotkać przeglądając różnego rodzaju rankingi i porównania zamieszczone na witrynach internetowych. Użytkownicy migrujący do OOo z pakietu MS Office doszukują się oddzielnego modułu na wzór Accessa. Czegoś takiego w OOo nie ma, nie znaczy to jednak, że jest on pozbawiony narzędzi do współpracy z bazami danych. Interakcja z bazami danych zapewniona jest za pomocą obiektów formularza. Obiekty te można wstawić do dokumentów tekstowych, arkuszy kalkulacyjnych oraz stron WWW.
Celem tego opisu jest pokazanie możliwości funkcjonalnych pakietu OpenOffice.org jako narzędzia do tworzenia, modyfikowania i nawigowania danymi. Jest to próba sprawdzenia czy można zastąpić popularnego Accessa OpenOfficem połączonych z relacyjną baza danych. We wcześniejszych wersjach OOo istniały pewne trudności ze skonfigurowaniem połączenia z serwerem baz danych. Wynikały one ze skomplikowanej konfiguracji w przypadku ODBC oraz brak możliwości edytowania bazy danych w przypadku JDBC. Przy tym ostatnim trzeba było uruchamiać odpowiedni moduł w którym wpisywało się polecenia SQL lub korzystać z innego interfejsu niż OOo. Takie rozwiązanie eliminowało w zasadzie użytkowników nie mających podstaw pracy z DBMS-ami. Sytuacja ta uległa poprawie po wprowadzeniu wersji 1.1. oraz po ukazaniu się nowych sterowników do MySQL (MySQL przez swoją prostotę jest chyba najczęściej wykorzystywanym serwerem baz danych).
Aby można było porównać Accessa i OOo trzeba się też znać na tym pierwszym. Sam osobiście nie jestem specjalistą od Accessa więc poprosiłem znajomych używających od lat tego programu i tworzących w nim zaawansowane projekty (tu podziękowania dla Marka Sałasińskiego) o zaprezentowanie mi przykładowego projektu wykonanego w Accessie który ja postaram się wykonać w OOo. Tworzenie tego projektu oraz jego późniejsza obsługa opisana została w poniższym dokumencie.
Środowiskiem wykorzystanym do wykonania projektu był system operacyjny Linux PLD . Dlatego też sposób instalacji oprogramowania przedstawiony zostanie zgodnie z tą dystrybucją. Przedstawiono również skrócony opis instalacji i konfiguracji oprogramowania pod system operacyjny Windows. Opis ten jest jednak zaczerpnięty ze źródeł w internecie i nie do końca został przeze mnie przetestowany. Wykorzystano również w projekcie serwer baz danych MySQL. Nie jest jednak obligatoryjne zastosowanie tego serwera. Można skorzystać z innego ot chociażby równie popularnego PostgreSQL czy nawet serwerów komercyjnych. Elastyczność w doborze serwera jest zapewniona dzięki wykorzystaniu interfejsu JDBC. Nie wiem jednak jak przebiega współpraca OOo z innymi serwerami.
Proces instalacji rozpoczniemy od zainstalowania serwera baz danych. W tym celu jako użytkownik root wpisujemy:
[root@mustek krasus]# poldek
a następnie instalujemy pakiety:
poldek> install mysql-3.23.53-1 mysql-client-3.23.53-1 mysql-libs-3.23.53-1
Jeżeli posiadasz nowsze wersje pakietów niż te zamieszczone powyżej nic nie stoi na przeszkodzie aby z nich skorzystać, sam korzystałem z wersji 4.0.
Po opuszczeniu poldka uruchamiamy skrypt inicjujący tabele uprawnień i dostępu w MySQL
[root@mustek krasus]# /etc/rc.d/init.d/mysql init
a następnie uruchamiamy MySQL,
[root@mustek krasus]# /etc/rc.d/init.d/mysql start
Poprawność instalacji można sprawdzić logując się do MySQL. Przed ustawieniem haseł dostępu do bazy danych wystarczy wpisać:
[root@mustek krasus]# mysql -u mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.13-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Tworzenie tabel i wprowadzanie do nich danych wykonywać będziemy z poziomu OOo. Jednak wymagane jest aby przed próbą nawiązywania połączenia z OOo istniała jakaś baza danych do której będzie można się połączyć. Dlatego teraz utworzymy przykładową bazę danych. Nie wychodząc z MySQL wydajemy polecenie:
mysql>create database hurtownia;
Oraz nadamy użytkownikowi krasus nieograniczone prawa w tej bazie.
mysql>grant all on hurtownia.* to krasus@localhost identified by 'secret'
mysql>grant all on hurtownia.* to krasus@127.0.0.1 identified by 'secret'Możemy już wylogować się z MySQL i kontynuować instalację oprogramowania.
Jeżeli nastąpiły jakieś problemy z instalacją MySQL pomocy należy szukać na stronie www.mysql.com/documentation/index.html. Ale również czuj się nieskrępowany pisząc do mnie.
Binarna wersja MySQL pod Windows zawiera kreatora instalacji który automatycznie przeprowadzi proces instalacji. Po zakończeniu instalacji trzeba jeszcze utworzyć przykładową bazę danych. Jest to wymagane przez OOo aby połączenie wykonywać do istniejącej bazy. Należy więc utworzyć bazę danych o przykładowej nazwie hurtownia i nadać do niej prawa dowolnie wybranemu użytkownikowi.
Środowisko Javy wymagane jest do uruchamiania programów Javy. Pliki konieczne do instalacji można znaleźć na stronie firmy Sun. Sun, producent technologii JavaTM udostępnił pliki instalacyjne pod adresem java.sun.com/j2se/1.4.2/download.html.
Należy pobrać i zainstalować następujące lub nowsze wersje plików:
j2re-1_4_2-linux-i586-rpm.bin – środowisko uruchomieniowe Javy;
j2sdk-1_4_2-linux-i586-rpm.bin – narzędzia developerskie.
Instalujemy środowisko Javy wpisując kolejno:
[root@mustek your_download_dir]# ./j2re-1_4_2-linux-i586-rpm.bin
[root@mustek your_download_dir]# rpm -ihv j2re-1_4_2-linux-i586.rpm
[root@mustek your_download_dir]# ./j2sdk-1_4_2-linux-i586-rpm.bin
[root@mustek your_download_dir]# rpm -ihv j2sdk-1_4_2-linux-i586.rpm
Po instalacji należy skonfigurować środowisko systemowe dodając zmienną JAVA_HOME oraz ścieżkę do plików binarnych w pliku $HOME/.bashrc lub globalnie w pliku /etc/prifile.
export PATH=/usr/java/j2sdk1.4.2/bin:$PATH
export JAVA_HOME=/usr/java/j2sdk1.4.2
Należy zainstalować pliki j2re-1_4_2_02-windows-i586-p-iftw.exe oraz j2sdk-1_4_2_02-windows-i586-p-iftw.exe lub nowsze. Po instalacji należy jeszcze ustawić zmienne środowiskowe. W Windows 9x, ustawiamy zmienne systemowe przez zmodyfikowanie pliku autoexec.bat, zlokalizowanym na dysku twardym w katalogu głównym. Plik ten jest wykonywany podczas startu systemu. Aby zmiany odniosły skutek, należy uruchomić ponownie system. Należy otworzyć plik autoexec.bat w edytorze tekstowym (użyj prostego edytora, np. notepad) i dodać ścieżkę do katalogu /bin/ znajdującego się w katalogu, gdzie zainstalowałeś JDK.
Np. jeżeli JDK zainstalowano w katalogu c:\jdk1.4\, należy dodać do pliku autoexec.bat linie:
set path=c:\jdk1.4\bin\
Trzeba być ostrożnym aby nie zmienić wcześniejszych ścieżek. Aby temu zapobiec dodaj tak zdefiniowana ścieżkę:
set path=%path%;c:\jdk1.4\bin\
W Windows NT, 2000 zmienną path należy dodać inaczej. Otwieramy Panel Sterowania (Control Panel), System i później wybieramy Environment Variabes, gdzie dodajemy nasze ścieżki do już istniejących zmiennej (Path), lub tworzymy nowe zmienne systemowe Path z naszymi ścieżkami1
W celu sprawdzenia poprawności zainstalowania komponentów Javy można napisać i uruchomić krótki skrypt. W ulubionym edytorze tekstowym należy wyedytować plik Test.java według poniższego wzoru:
public class Test
{
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
Następnie skompilować go przy użyciu:
[prompt]$ javac Test.java
lub
C:\javac Test.java
Oraz uruchomić
[prompt]$ java Test
lub
C:\java Test
W wyniku uruchomienia programu na monitorze powinien się ukazać tekst “Hello world”. W ten sposób można mieć pewność, iż instalacja przebiegła prawidłowo.
Jeżeli jeszcze nie zainstalowałeś programu OpenOffice.org możesz pominąć ten punkt. Ponieważ podczas instalacji instalator sam znajdzie twoje JRE i zapyta Cię tylko o potwierdzenie ustawień. Natomiast jeżeli masz już zainstalowany OOo musisz użyć programu który pomoże Ci ustawić środowisko Javy. W tym celu przejdź do katalogu w którym został zainstalowany program OpenOffice.org a następnie wybierz katalog program. Teraz uruchom skrypt jvmsetup wydając komendę:
[krasus@mustek program]$ ./jvmsetup
W windows wystarczy kliknąć dwa razy na ikonie pliku o nazwie jvmsetup.exe.
Po
ukazaniu się okna dialogowego wskaż ręcznie, klikając przycisk
Szukaj katalog j2sdk1.4.2. U
mnie znajduje się on w /usr/java/j2sdk.1.4.2. Zatwierdź wybór
naciskając OK. Jeżeli OOo był uruchomiony należy go zamknąć i
uruchomić ponownie aby zmiany odniosły skutek.

Rysunek 1. Okno ustawiania środowiska javy w OpenOffice.org.
Sterownik JDBC zapewnia możliwość komunikowania się z bazą danych. Instalacja jego jest prosta co daje mu pewną przewagę nad sterownikami ODBC. Ponadto zapewnia on możliwość współpracy programu OOo z większą ilością baz danych, nawet komercyjnych.
Instalacja sterownika polega na pobraniu odpowiedniego pliku, rozpakowaniu oraz ustawieniu zmiennych środowiskowych. Najnowszy sterownik JDBC do MySQL można pobrać ze strony www.mysql.com/products/connector-j/index.html (nie może to być wersja niższa niż 3.0.9 ponieważ działanie jej jest wadliwe z OOo). Po pobraniu należy rozpakować plik mysql-connector-java-3.0.9-stable.tar.gz lub zip. Najważniejszy z rozpakowanych jest plik mysql-connector-java-3.0.9-stable-bin.jar (jest to właściwy sterownik) można go umieścić w dowolnym miejscu (katalogu) jednak ze względów porządkowych utwórzmy sobie katalog /usr/java/drivers a następnie przenieśmy tam ww. wymieniony plik. Należy również wskazać OOo ścieżkę dostępu do pliku sterownika. W tym celu uruchomiamy OOo i z menu Narzędzia wybieramy Opcje a następnie rozwijamy główną listę OpenOffice.org i zaznaczamy Bezpieczeństwo. W oknie tym przy zmiennej ClassPath naciskamy przycisk Przeglądaj celem wskazania ścieżki sterownika. W oknie Wybierz Archiwa naciskamy Dodaj i wskazujemy plik mysql-connector-java-3.0.9-stable-bin.jar. Zatwierdzamy wybór i po ponownym uruchomieniu OOo możemy już nawiązywać połączenie z bazą danych.

Rysunek 2. Okna dialogowe ustawiania zmiennej
ClassPath
Uruchamiamy OOo i wybieramy, Narzędzia -> Źródła danych (lub naciskamy po prostu przycisk F4). Następnie klikamy prawym przyciskiem myszki w dowolnym miejscu okna eksploratora źródeł danych i wybieramy Administracja źródeł danych. Naciskamy przycisk Nowe źródło danych i ustawiamy odpowiednio:
Zakładka Ogólne
Nazwa: hurtownia
Typ bazy danych: JDBC
URL źródła danych: bez zmian
Zakładka JDBC
Klasa sterownika JDBC: com.mysql.jdbc.Driver
URL: jdbc:mysql://localhost/hurtownia?useHostsInPrivileges=false
Nazwa użytkownika: nazwa użytkownika zarejestrowanego w MySQL.
Wybieramy OK aby zatwierdzić ustawienia.
Jako tło dla pokazania możliwości pracy OOo z bazami danych posłuży hipotetyczna hurtownia warzywna. Hurtownia ma podpisane umowy z dostawcami oraz z pewną grupą klientów. Zaprojektowany system ma posiadać możliwość dodawania do bazy nowych dostawców i klientów. Całość obrotu towarem opiera się na kontroli faktur. Schemat bazy danych zapewniający taką możliwość jest następujący rys 3.

Rysunek 3. Schemat bazy danych hurtownia.
Tabela klienci przechowuje dane klientów zaopatrujących się w naszej hurtowni, dostawcy dane dostawców towaru, natomiast towary zawiera produkty które oferuje nasza hurtownia. Tabele sprzedaz oraz dostawa odpowiadają za kontrolę ruchu w naszej firmie. Ze względu na to, iż celem opisu nie jest stworzenie systemu obsługi hurtowni a zapoznanie użytkowników z funkcjonowaniem OOo w połączeniu z bazami danych, schemat tabel został bardzo uproszczony. Jednak chyba każdy po zrozumieniu idei, bez problemu rozbuduje sobie min. tabelę dostawcy o adres klienta, telefon itp. oraz dostosuje schemat tabel do własnych potrzeb.
Jeżeli nie wiesz do czego potrzebna jest taka ilość tabel oraz co oznaczają strzałki między nimi nie musisz się przejmować. Sposób tworzenia prostej tabeli a później formularza który będzie pobierał i modyfikował dane możesz poznać śledząc opis zawarty w punktach od 5.1 do 5.2.3
Oczywiście tabele utworzymy
korzystając z programu OOo. W tym celu po jego uruchomieniu wybieramy
menu Widok -> Źródła Danych albo po prostu
naciskamy klawisz F4. Po otwarciu menu w oknie eksploratora powinny
ukazać się nasze źródła danych. Jeżeli wszystko wykonaliśmy
prawidłowo powinno ich być co najmniej dwa: Bibliography oraz
nasza hurtownia. Klikamy na “plusik”
obok hurtowni w celu rozwinięcia jej struktury. Następnie rozwijamy
strukturę tabel. W tym momencie program powinien zapytać nas o hasło
dostępu do bazy danych. Po wpisaniu hasła powinny ukazać się nam
tabele w bazie danych hurtownia. Oczywiście nic się nie pokaże
ponieważ tabel tam jeszcze nie ma. Musimy dopiero je dodać.

Rysunek 4. Okno eksploratora źródeł danych
W tym celu klikamy prawym przyciskiem na gałęzi Tabele i z rozwiniętego menu wybieramy Nowy projekt tabeli. Otworzy nam się nowe okno projektu tabel. W środku okna znajduję się tabela z nazwami kolumn, w kolejności odpowiednio: Nazwa pola, Typ pola, Opis. Służy ona do budowy tabel w bazie danych. Rozpoczniemy od konstrukcji tabeli klienci (w każdej firmie klient jest najważniejszy). Klikamy w pierwszym wierszu kolumny Nazwa pola i wpisujemy ID_KLI. W kolumnie obok wybieramy poprzez rozwinięcie typ pola i wskazujemy Small Integer [INT](jest to typ liczb całkowitych). Na dole okna projektu tabel w obszarze Właściwości pola wybieramy Wartość automatyczna tak. Opis tej funkcji znajduje się w oknie obok. (Funkcja ta jest odpowiednikiem “mysqlowego” auto_increment jednak z moich doświadczeń nie za bardzo działa w wersji OOo 1.1. Jeżeli się mylę chętnie dowiem się jak należy jej używać). Pole ID_KLI jest wg schematu (rys. 3) identyfikatorem wartości tabeli klienci. Aby było nim rzeczywiście należy zadeklarować go jako klucz główny tabeli. W tym celu klikamy prawym przyciskiem myszki w lewym końcu wiersza ID_KLI (na szarym polu) i wybieramy z menu Klucz główny.
Pierwszą kolumnę tabeli klienci mamy
już zdefiniowaną. Klikamy lewym przyciskiem myszki w wierszu poniżej
i wpisujemy nazwę następnego pola. Odpowiednio: Nazwa_klienta
typ text [VARCHAR], Opis – dowolność, Właściwości
pola – dowolność. Pierwsza tabela jest w zasadzie gotowa,
trzeba jeszcze ją zapisać. Wybieramy przycisk zapisz i nadajemy jej
nazwę klienci.

Rysunek 5. Definiowanie tabeli klienci przy wykorzystaniu Menu projekt tabeli
Pozostałe tabele wykonujemy analogicznie do tabeli klienci zgodnie z rysunkiem nr 3. Pamiętając o tym aby typ pól zaczynających się od ID... był liczbowy (INT), natomiast pola data, tabel dostawa oraz sprzedaz zdefiniowane były jako Date.
Właściwy projekt tabel powinien opierać się również o klucze obce. Np. między kolumną ID_KLI tabeli dostawcy a kolumną ID_KLI tabeli sprzedaz powinna zachodzić integralność referencyjna. Ustawienie tego z poziomu OOo nie jest możliwe. Ponadto warto również włączyć opcję auto_increment we wszystkich kluczach głównych aby się nimi nie zajmować, co również nie jest możliwe z poziomu OOo. Jest jeszcze kilka innych innych szczegółów które należało by zmienić aby projekt był prawidłowy ale pozostawiam to pod rozwagę przyszłych projektantów.
Skoro projekt tabel mamy już wykonany nie pozostaje nam nic innego niż je wypełnić danymi. Do tego celu stworzymy sobie specjalny interfejs aby zwykły użytkownik OOo nie miał większych problemów z uzupełnieniem tabel.
W celu uzyskania miłego widoku naszego interfejsu wprowadzania danych, otwieramy nowy dokument writera a w nim wpisujemy kilka głośnych nagłówków z nazwą naszej firmy oraz rodzajem modułu (moduł zarządzania kontaktami). Zmienimy sobie tło dokumentu na jakiś ładny temat i piszemy na środku klienci. Nasz moduł dodawania i zarządzania klientami będzie bardzo prosty ponieważ mamy tylko jedno okno formularza, ale niech tam, klientów na pewno nam nie zabraknie.
Jak wspomniano wcześniej praca z bazami danych w pakiecie OpenOffice.org opiera się na formularzach. Rozpoczniemy od zdefiniowania formularza. Z menu prawej listwy okna roboczego wybieramy przycisk Formanty formularza. Pojawi się okno Funkcje formularza.

Rysunek 6. Menu Funkcje formularza.
Naciskamy w nim przycisk Nawigator
formularza. W nowym oknie które się pojawiło klikamy
prawym przyciskiem myszki na przycisku formularze i z rozwiniętego
menu wybieramy Nowy oraz Formularz. Nowoutworzonemu
formularzowi można nadać własną nazwę
formularza np. hurt_kli (to mi akurat przyszło teraz do
głowy).

Rysunek 7. Okno nawigatora formularzy.
Po zmianie nazwy klikamy prawym przyciskiem myszki na hurt_kli i wybieramy Właściwości. Przełączamy na zakładkę Dane i rozwijamy pole Źródło danych. Ustawiamy źródło danych na hurtownia. Pozostałe pola zgodnie z rysunkiem poniżej (patrz rysunek nr 8). W trakcie konfigurowania innych pól program zapyta nas o hasło dostępu do bazy danych. Po zdefiniowaniu pól zamykamy okno Właściwości formularza.

Rysunek 8. Ustawienia pól formularza.
Formularz posiada kilka typów pól. Są to między innymi listy wyboru, pola tekstowe, pola liczbowe itp. Elementy te są widoczne w oknie Formanty formularza. Można do nich dowiązywać polecenia SQL wynik których wyświetlany jest później w danym polu. Nie trzeba jednak wpisywać ręcznie poleceń SQL, tę rolę spełnia za nas AutoPilot. Uruchamia się on zazwyczaj po wstawieniu danego obiektu do dokumentu. Z pomocą AutoPilota można łatwo przyporządkować do pola dane wyciągnięte z bazy danych.
Po takim wstępie można przystąpić do wstawiania pól formularza do dokumentu. Z menu Funkcje formularza (patrz rys. 6) wybieramy przycisk Pole kombi (pole to umożliwia zarówno odczytywanie informacji jak i ich zapis w bazie danych) i przeciągamy po dokumencie aby utworzyć obiekt. Po przeciągnięciu otworzy się okno AutoPilota. Wewnątrz niego lista tabel w bazie danych hurtownia. Wybieramy tabelę klienci i naciskamy Dalej. W następnym oknie AutoPilot pyta się jakie pole ma być wyświetlane w obiekcie lista wyboru. Wybieramy Nazwa_klienta i ponownie naciskamy Dalej. W kolejnym oknie AutoPilota definiujemy czy pole ma służyć tylko do odczytu danych czy również do zapisu. Wybieramy do zapisu i zaznaczmy kolumnę Nazwa_klienta. Poszczególne etapy tworzenia pola kombi pokazane są na oknach poniżej (rys. 9).

Rysunek 9. Przypisywanie danych do obiektu Pole
kombi.
Na tym etapie możemy już rozpocząć wprowadzanie danych do tabeli klienci. Należy jeszcze wyłączyć tryb projektu w menu Funkcje formularza. A potem można już oddać się przyjemności wprowadzania dużej liczby klientów. Strona którą ja wykonałem jako moduł zarządzania kontaktami wygląda następująco – rysunek 10.

Rysunek 10. Formularz do zarządzania wpisami tabeli
klienci.
Aby wprowadzić nazwę nowego klienta
do bazy należy kliknąć w polu formularza wpisać nazwę i zatwierdzić
naciskając Enter lub przycisk dyskietki na dolnym pasku
narzędziowym okna roboczego. Wprowadzenie kolejnego rekordu
rozpoczynamy od naciśnięcia przycisku Nowy rekord i ponownym
wpisaniu nazwy w polu kombi. Usuwanie polega na wybraniu z listy
“odpowiedniego kandydata” który
zbyt późno reguluje płatności i naciśnięciu przycisku usuń.
Podobnie z modyfikacją wpisu. Wybieramy z listy interesujący nas
rekord i aktualizujemy. Przyciski modyfikacji zawartości bazy danych
przedstawione są na rysunku poniżej.

Rysunek 11. Pasek narzędziowy bazy danych.
Jeżeli mamy tak ogromną liczbę klientów, że wyszukiwanie z listy rozwijanej jest uciążliwe możemy zastosować narzędzia do wyszukiwanie rekordu lub założyć filtr. Również te przyciski są umieszczone na pasku narzędziowym bazy danych.
W podobny sposób tworzymy formularze do wypełniania tabeli dostawcy oraz towary. Należy jednak zapamiętać, że w przypadku gdy chcemy zamieścić formularze odwołujące się do różnych tabel w bazie danych w jednym dokumencie musimy dla każdej tabeli stworzyć oddzielny formularz. W oknie Funkcje formularza wybieramy Nawigator formularza -> Dodaj Nowy formularz i odpowiednio ustawić jego parametry do właściwej tabeli.
Innego podejścia wymagają tabele dostawy oraz sprzedaz. W tym przypadku dane w formularzu łączone są z kilku tabel. Otwieramy nowy dokument w którym wykonamy formularz wprowadzania danych do tabeli sprzedaz. Jak w poprzednim przypadku możemy napisać kilka ładnych nagłówków i ustawić tło. Wstawimy również tabelę aby nasze pola formularza (a będzie ich tutaj znacznie więcej niż w poprzednich dokumentach) były równo ustawione w dokumencie. Rozpoczynamy: Menu Funkcje formularza -> Nawigator formularza -> Dodaj nowy formularz -> nazwa hurt_dost -> Właściwości formularza -> zakładka Dane. W oknie tym analogicznie do poprzednich tabel ustawiamy:
Źródło danych: hurtownia
Typ zawartości: Tabela
Zawartość: Dostawa
Pozostałe bez zmian.
Zamykamy okno. W dokumencie we
wstawionej tabeli (pierwszy wiersz, pierwsza kolumna) wpisujemy Nazwa
dostawcy:. Klikamy w kolumnie obok. Z okna Funkcje formularza
wybieramy przycisk Pole listy i przeciągamy w tabeli.
Następnie w nowootwartym oknie AutoPilota wybieramy tabelę dostawcy
i naciskamy Dalej. W następnym oknie jako wyświetlane pole
wybieramy Nazwa_dostawcy i ponownie Dalej. Kolejne okno
umożliwia nam łączenie tabel. Połączymy tabele dostawy oraz
dostawcy. Celem tego połączenia jest zamiana liczbowego
identyfikatora dostawcy (ID_DST) tabeli dostawy na nazwę
dostawcy (Nazwa_dostawcy) tabeli dostawcy. Jeżeli
połączymy te dwie tabele to zamiast identyfikatora wyświetlana będzie
w polu formularza nazwa dostawcy. Podsumowując, z pola Tabela
wartości wybieramy ID_DST oraz pola Tabela listy
ID_DST i naciskamy przycisk Utwórz. Powyższe
kroki ilustruje rysunek nr 12.

Rysunek 12. Etapy przypisywanie danych polu Lista.
Wracamy do naszego dokumentu głównego. W następnym wierszu tabeli wpisujemy Nazwa towaru: i ustawiamy kursor w sąsiedniej kolumnie. Ponownie wybieramy z Menu Funkcje formularza przycisk Pole Lista i wstawiamy go do tabeli. Następnie podobnie jak w przypadku poprzednim przechodzimy przez serię okien AutoPilota ze wyborem w kroku pierwszym tabeli towary następnie w drugim pola nazwa_towaru oraz w trzecim, pól ID_TOW i ID_TOW.
Kolejny wiersz tabeli jest zarezerwowany na wpisywanie numeru faktury. Wpisujemy więc w pierwszej kolumnie Numer Faktury: i obok wstawiamy Pole tekstowe wybrane z okna Funkcje formularza. Tym razem jednak po wstawieniu pola AutoPilot nie zadziałał. Trzeba samemu je zdefiniować. Przy zaznaczonym obiekcie pole tekstowe (wstawione w tabeli) naciskamy przycisk Właściwości formantu. W otwartym oknie wybieramy zakładkę Dane i wierszu Pole danych ustawiamy kolumnę NR_FAKT. Zamykamy okno.
W podobny sposób postępujemy z polem do wprowadzania daty wystawienia faktury. A zatem: Menu Funkcje formularza -> przycisk Pole Daty -> Wstawienie pola w tabeli -> Menu Funkcje formularza -> przycisk Właściwości formantu -> zakładka Dane -> Pole Danych ustawiamy na kolumnę data.
W analogiczny sposób postępujemy z polem ilość. Po wprowadzeniu wszystkich pól możemy wyłączyć w oknie Funkcje formularza tryb projektu i zobaczyć efekty. Formularz sporządzony przeze mnie wygląda następująco.

Rysunek 13. Formularz wprowadzania faktur dostawy
towaru.
W jaki sposób teraz należy wprowadzać dane do bazy? Z listy wyboru Nazwa dostawcy wybieramy dostawcę który przywiózł nam towar (zakładam, że ta tabela oraz tabela towary zostały wcześniej wypełnione) Z nazwa produktu wybieramy towar jaki został dostarczony. Wpisujemy numer faktury, datę jeżeli jest inna niż dzisiejsza oraz wypełniamy pole Ilość towaru. Zatwierdzamy wprowadzone dane i tyle.
Pozostaje jeszcze wykonanie w analogiczny sposób formularza do wprowadzania faktur ze sprzedaży i można otwierać hurtownię.
Jak już wprowadzimy trochę faktur oraz sprzedamy trochę towaru warto by było się pokusić o pewne podsumowania. Sprawdzić obroty naszej firmy oraz ustalić strategicznych klientów. OpenOffice.org posiada gotowe narzędzia tworzenia różnego rodzaju zestawień oraz raportów.
Chcemy zobaczyć jaki towar najlepiej schodzi oraz jaki klient najwięcej od nas zakupił. Do sporządzenia tego zestawienia posłużymy się kwerendą. W dowolnym dokumencie writera otwieramy źródła danych (F4). Rozwijamy źródło hurtownia i klikamy prawym przyciskiem myszki na Kwerendy. Z rozwiniętego menu wybieramy Nowy projekt kwerendy. Do projektowania kwerend OOo posiada specjalne menu. W tym menu klikamy dwa razy przycisk Dodaj tabelę... znajdujący się na pasku narzędziowym. W oknie Dodaj tabelę zaznaczamy sprzedaz a następnie przycisk Dodaj. Czynność powtarzamy dla tabel klienci oraz towary. Rysunek 14 przedstawia menu dodawania tabel.

Rysunek 14. Dodawanie tabel w projekcie kwerendy.
Wstawione tabele należy jeszcze połączyć zależnościami referencyjnymi. W tym celu należy przeciągnąć pole ID_KLI tabeli sprzedaz na ID_KLI tabeli klienci. W ten sam sposób połączyć również ID_TOW tabel sprzedaz i towary. Teraz już można rozpocząć konstruowanie kwerend.
Wyszukiwanie ilości oraz rodzaju sprzedanego towaru.
Graficzny projekt kwerendy
W wierszu Pole wybrać kolumnę ID_TOW tabeli sprzedaz;
W wierszu Funkcje wybrać Grupowanie;
w następnej kolumnie wiersza Pole wybrać kolumnę ilosc tabeli sprzedaz;
w wierszu Funkcje wybrać Suma;
W wierszu Pole wybrać kolumnę Nazwa_towaru tabeli towary;
Zapisać kwerendę.
Wpisanie polecenia SQL
Kliknąć na pasku narzędziowym przycisk wyłącz tryb projektu;
W oknie na dole wpisać: SELECT TOWARY.NAZWA_TOWARU, SUM(ILOSC) AS ILOSC FROM SPRZEDAZ, TOWARY WHERE TOWARY.ID_TOW = SPRZEDAZ.ID_TOW GROUP BY SPRZEDAZ.ID_TOW
Zapisać kwerendę.
Nazwa klienta, rodzaj towaru oraz ilość
Graficzny projekt kwerendy
W wierszu Pole wybrać kolumnę Nazwa_klienta tabeli klienci;
W wierszu Funkcje wybrać Grupowanie;
W kolumnie obok, w wierszu Pole wybrać Nazwa_towaru tabeli towary;
Wiersz Funkcje ustawić na Grupowanie;
Kolumna trzecia w wierszu Pole; wybrać ilosc tabeli sprzedaz;
Wiersz Funkcje ustawić na Suma;
Zapisać kwerendę.
Wpisanie polecenia SQL
Kliknąć na pasku narzędziowym przycisk wyłącz tryb projektu;
Wpisać w okienku komendę SQL: SELECT KLIENCI.NAZWA_KLIENTA, TOWARY.NAZWA_TOWARU, SUM(ILOSC) AS ILOSC FROM KLIENCI, TOWARY, SPRZEDAZ WHERE TOWARY.ID_TOW=SPRZEDAZ.ID_TOW AND KLIENCI.ID_KLI=SPRZEDAZ.ID_KLI GROUP BY NAZWA_KLIENTA, NAZWA_TOWARU
Zapisać kwerendę.
Sprawdzanie ilości towaru w magazynie
Wpisanie polecenia SQL
Kliknąć na pasku narzędziowym przycisk wyłącz tryb projektu;
Wpisać w oknie komendę SQL: SELECT TOWARY.NAZWA_TOW, SUM(DOSTAWA.ILOSC)-SUM(SPRZEDAZ.ILOSC) AS ILOSC_W_MAGAZYNIE FROM TOWARY, SPRZEDAZ, DOSTAWA WHERE TOWARY.ID_TOW=SPRZEDAZ.ID_TOW AND TOWARY.ID_TOW=DOSTAWA.ID_TOW GROUP BY SPRZEDAZ.ID_TOW
Zapisać kwerendę.
Mamy zdefiniowanych kilka kwerend możemy generować zestawienia i raporty. Z menu plik wybieramy AutoPilot -> Formularz. W oknie Wybierz bazę danych wybieramy hurtownia a w oknie Tabele i kwerend np. Ilosc_w_magazynie. Wybieramy pola które mają być pokazywane (wszystkie), naciskamy Dalej. Dobieramy wg. własnych upodobań rozmieszczenie pól oraz ich style in naciskamy Utwórz. Zapisujemy plik pod dowolną nazwą i już znamy ilość poszczególnych towarów w magazynie. Możemy teraz wyszukiwać lub zakładać filtry aby odnaleźć interesujące nas produkty.
Wygenerujemy jeszcze raport zestawiający nam ilość oraz rodzaj towaru zakupionego przez poszczególnych klientów. Wybieramy Menu Plik -> AutoPilot -> Raport. Baza danych jak poprzednio - hurtownia kwerenda klienci_towary_ilosc. Wstawiamy wszystkie pola i naciskamy Dalej. Zmieniamy etykiety pól wg. własnych upodobań i naciskamy Dalej. Grupować nie będziemy ponieważ robi to już kwerenda więc naciskamy Dalej. Możemy teraz posortować dane tak jak nam odpowiada i nacisnąć Dalej. Wpisujemy tytuł raportu, wybieramy styl i naciskamy Dalej. W kolejnym oknie wybieramy raport statyczny i naciskamy Utwórz. Raport gotowy.
Najważniejsze założenia projektu zostały spełnione. Według Marka Sałasińskiego są to:
nie dopuszczać użytkowników do bezpośrednich operacji na tabelach bazy danych
oraz trzymać ich z dala od kwerend.
Poprzez odpowiednio zdefiniowane formularze mamy pewność, że użytkownicy będą mieli dostęp tylko do tych części danych do których powinni. Ponadto ten sposób organizacji dokumentu zapewnia nam, że nawet ci z użytkowników, którzy nie mający pojęcia o bazach danych będą mogli je obsługiwać.
Kolejnym ważnym a zarazem trudnym zadaniem było dostarczenie możliwości sprawdzania ilości towaru w magazynie. Nie udało się stworzyć tej usługi poprzez kwerendę w trybie projektu ale problem został pokonany przez bezpośrednie wpisanie polecenia SQL.
Jak już kilkakrotnie wspomniano projekt nie jest dopracowany aby mógł być wykorzystany w prawdziwej firmie. Odpowiedni poziom bezpieczeństwa danych w bazie nie został osiągnięty. Bardzo łatwo jest usunąć dane podczas pracy z polami typu kombi. Dlatego warto by było rozbić moduł zarządzania kontaktami na kilka podmodułów: wprowadzania, wyszukiwania oraz modyfikacji. Istnieje jeszcze kilka ważnych aspektów które należy zmienić w prawidłowym projekcie. Nie mniej myślę, że zostało pokazane, iż program OpenOffice.org może w pewnym stopniu zastąpić Accessa. W jakim, nie wiem, nie znam się na Accessie. Miłej zabawy.
Adam Krasuski
(akrasuski@sgsp.edu.pl)
Licencja GPL
1Informacje zaczerpnięte ze strony http://www.javasoft.pl/java/java_1.html