Wstęp
Otaczający świat zalewa nas mnóstwem
informacji. Z drugiej strony funkcjonowanie we współczesnym świecie bez tych
informacji jest niemożliwe. Dlatego też powstała niniejsza relacyjna baza
danych.
Firma Mateccy & Partners jest średniej
wielkości przedsiębiorstwem założonym na początku 2002 roku. To prężnie
działająca agencja reklamowa zajmująca się produkcją wszelkiego rodzaju reklam
(telewizyjnych, radiowych, prasowych) oraz realizacją dużych przedsięwzięć
promocyjnych. Działa na obszarze całego województwa Mazowieckiego i
współpracuje z wieloma innymi firmami.
W miarę rozwoju firmy Mateccy &
Partners rosło zapotrzebowanie na gromadzenie niezbędnych informacji.
Konwencjonalne, proste bazy danych powstające do tej pory na kartkach papieru,
zdecydowano zastąpić i przenieść do wygodniejszego, nowocześniejszego narzędzia
jakim jest komputer. Ta elektroniczna baza została zaprojektowana specjalnie z
myślą o usprawnieniu funkcjonowania przedsiębiorstwa. Daje ona całą gamę
możliwości:
●
przyśpiesza zdecydowanie czas wyszukiwania i umożliwia wiele wariantów
selekcji danych
●
w sposób przejrzysty i czytelny prezentuje je
●
pozwala na niezliczone sposoby odfiltrowywania potrzebnych informacji
● i przede wszystkim
zajmuje mało miejsca (nie wymaga specjalnego pomieszczenia, bo spokojnie mieści
się na jednej dyskietce lub płycie
kompaktowej przy dużej ilości danych).
W przypadku tej firmy komputeryzacja
systemu archiwizacji danych jest wręcz niezbędna dla jej dalszego rozwoju i sprawnego
działania.
W dalszej części dokumentacji zostanie
szczegółowo omówiona cała funkcjonalność bazy wraz z jej strukturą budowy.
Tabele
Baza zawiera osiem tabel:
1. Dostawcy
2. Klienci
3. Podwykonawcy
4. Pracownicy
5. Stanowiska
6. Towary
7. Zamówienia
8. Zlecenia
Wszystkie tabele zawierają numery
identyfikacyjne, które nadawane są automatycznie i są jednocześnie kluczem
głównym każdej tabeli. Numery telefonów (zarówno stacjonarnych jak i
komórkowych) wprowadzane są przez tak zwaną maskę, która z góry narzuca format
wprowadzanych danych. Daty są konwertowane do opisowego formatu. Nawet
wprowadzenie takich nieczytelnych danych 1,1,1 zostanie zamienione na 1
stycznia 2001. Dzięki temu dane są ujednolicone, uporządkowane i czytelne dla
wszystkich użytkowników.
Tabela Dostawcy gromadzi informacje o
wszystkich firmach, które realizują zamówienia pracowników, takie jak materiały
biurowe, czy też towary niezbędne do realizacji zleceń. Zawiera numer
identyfikacyjny firmy, nazwę firmy oraz telefon kontaktowy.
Informacje o wszystkich klientach
zawiera tabela Klienci. Są tam takie pala jak: ID klienta, nazwę firmy, imię
i nazwisko osoby reprezentującej firmę, telefon kontaktowy oraz dokładny adres.
Tabela Podwykonawcy zawiera dane o
firmach, które współpracują z agencją reklamową i którym zlecane są różne prace
specjalistyczne, jak na przykład druk ulotek i plakatów. Mieszczą się w niej
podstawowe informacje, czyli numer identyfikacyjny, nazwa i telefon kontaktowy.
Dane o wszystkich osobach zatrudnionych
w firmie mieszczą się w tabeli Pracownicy. Oprócz numeru ID i danych
osobowych, zawiera informacje o wysokości wynagrodzenia pracownika oraz
stanowisku na jakim jest dana osoba zatrudniona. Pole to obsługiwane jest za
pomocą listy kombi, z której można wybrać odpowiednie stanowisko (jest to tzw. Combo Box).
Tabela Stanowiska zawiera spis
wszystkich możliwych posad jakie są dostępne w firmie.
Towary zawierają listę wszystkich
dotąd zamawianych produktów zamawianych przez pracowników.
W Zamówieniach zestawione są informacje
o tym kto, kiedy, co, za ile i ile towarów zostało zamówionych, a także o tym
jaka firma odpowiada za realizację zamówienia, kiedy upływa termin, czy zostało
wszystko dostarczone i czy zostało zapłacone.
W tabeli Zlecenia gromadzone są dane o
tym dla którego klienta jest wykonywane zlecenie, o typie zlecenia, terminach
realizacji, o tym czy zostały wykonane, ile kosztowały i czy dana firma
zapłaciła za usługę. Ponadto przy każdym rekordzie figuruje imię i nazwisko
osoby odpowiedzialnej za pracę nad wykonaniem zlecenia.
Relacje
Tabele są nieodłącznym i niezbędnym elementem każdej relacyjnej bazy
danych (jak sama nazwa wskazuje). W tej bazie danych relacjami są powiązane
wszystkie tabele za pomocą łącza jeden-do-wielu lub wiele-do-jednego. Schemat
umieszczony na następnej stronie obrazuje wszystkie relacje założone pomiędzy
tabelami (rysunek 1).
Rys. 1. Relacje między tabelami.
Kwerendy
Cała baza danych zawiera kwerendy wszystkich dostępnych rodzajów:
ˇ Wybierające
ˇ Uaktualniające
ˇ Tworzące nowe tabele
ˇ Usuwające
ˇ Krzyżowe
Utworzonych jest prawie 20 kwerend,
które filtrują i wyświetlają konkretne informacje. Usprawnia to wyszukiwanie
danych i pokazywane są tylko te informacji, które są potrzebne, a pozostałe są
pomijane.
Część z istniejących kwerend powstało
specjalnie do formularzy oraz raportów, by zawierały aktualne i tylko niezbędne
dane z tabel.
Za pomocą kwerendy wybierających można
wyszukać spośród dostaw wszystkie zamówienia, które przekraczają kwotę 200zł
przez co podlegają dodatkowej kontroli. Inna kwerenda wyświetla listę
niewykonanych zleconych projektów, inna pracowników spoza Warszawy (Pracownicy.miasto -> Not Like
"Warszawa"), a jeszcze inna pracowników z nazwiskami
zaczynającymi się na literę A (Like
"A*").
Dodatkowo możliwe jest wyświetlenie
rekordów dotyczących określonego tematu. Podczas uruchomienia kwerendy Podaj
nazwę zlecenia wyskakuje okienko z prośbą o wpisanie zlecenia, by uzyskać
wszystkie informacje i wszystkie wpisy związane z podaną nazwą.
Kwerendy pozwalają także grupować,
sumować, zliczać lub obliczać średnią. Przykładem jest Zlecenia - "Group by", "Count", "Avg",
"Sum" , która zawiera informacje o ilości zleceń poszczególnych
klientów, średnim kosztem jednego zlecenia, jak również sumą należności za nie
wszystkie.
Można także symulować zmiany w tabelach
bez dokonywania trwałych zapisów (do tego też służą kwerendy wybierające).
Natomiast, żeby zaktualizować dane i na przykład podnieść ceną kilku wybranych
produktów czy usług, używa się kwerend aktualizujących. Za ich pomocą
sprzątaczki dostają podwyżkę 15%, a ceny niektórych usług mogą wzrosnąć po
określonym terminie.
Kwerenda usuwająca, może zrobić porządek
w bazie danych, usuwając niepotrzebne juz informacje. W ten niezwykle prosty
sposób można wykasować historię dostarczonych zamówień, gdy uznamy, że są już
nam zbędne.
Dzięki kwerendzie tworzącej nową tabele
można zapisać do nowej tabeli wybrane dane - na przykład stworzyć w niej
kosztorys wybranego klienta.
Kwerendy krzyżowe wyświetlają konkretne
informacje w formie tabeli, w których kolumnach i wierszach precyzuje się
potrzebne informacje. Tak działa kwerenda Klienci
oraz ich zlecenia. W wierszach są nazwy zleceń, w kolumnach nazwy firm
(klientów), a w komórkach sumę kosztów za wszystkie wykonywane dla nich usługi.
Formularze
Wygodnym narzędziem do przeglądania bazy
danych jest formularz. Dzięki niemu został stworzony interfejs z użytkownikiem.
Daje on dużą funkcjonalność i ułatwia pracę redukując poziom trudności obsługi
bazy do minimum. Możliwe jest wyświetlanie istniejących danych oraz dodawanie
nowych rekordów.
W tej bazie danych jest grubo ponad 20
formularzy i podformularzy, dzięki czemu dostępnych jest bardzo dużo
udogodnień. W przyjemny dla oka sposób są wyświetlane, wyszukiwane i dodawane
informacje.
Wszystkie formularze trzymają się takiej
samej konwencji graficznej. W tle umieszczona jest grafika, która kojarzy się
ze znakiem firmy. Wszystkie przyciski, które wykonują podobne funkcje w różnych
formularzach, we wszystkich z nich są w tym samym miejscu, by praca z nimi była
łatwa, a ich układ szybko zapamiętany. Każdy formularz ma ikonę na pasku
tytułowym z logo firmy, która może być nie obsługiwana w starszych
wersjach programu MS Access lub z niewiadomych przyczyn nie wyświetlana.
Formularze mają zablokowaną możliwość zmiany wymiarów okna oraz wyłączone są
przyciski minimalizacji i maksymalizacj. Wszędzie umieszczony jest przycisk
umożliwiający bezpośredni powrót do menu głównego i, ewentualnie, do formularza
ojczystego, z którego został otwarty. Przy przechodzeniu między wszystkimi
formularzami, każdy poprzedni jest zamykany przed przejściem do kolejnego.
Przy uruchomieniu bazy danych
wyświetlany jest automatycznie formularz startowy z dostępnym menu. Paski
narzędzi są wyłączone. Pozostało jedynie rozszerzone menu programu MS Access,
by w każdej chwili łatwo można było przejść do trybu projektowania lub do okna
z właściwościami poszczególnych elementów.
Formularz Start zawiera siedem przycisków otwierających inne poszczególne
formularze:
ˇ Dostawcy
ˇ Pracownicy
ˇ Klienci
ˇ Stanowiska
ˇ Zlecenia
ˇ Podwykonawcy
ˇ oraz Raporty.
Mieści się tam jeszcze jeden przycisk,
który zamyka całą aplikację przycisk Stop.
Rys. 2. - Formularz startowy:
Po kliknięciu na pierwszy z przycisków przechodzi
się do formularza Dostawcy (rys. 3). Za pomocą przycisków nawigacyjnych można
przeglądać informacje o dostawcach. Edycja domyślnie jest zablokowana (jak z
resztą we wszystkich innych formularzach i podformularzach), którą można
odblokować dzięki specjalnemu przycisku Edycja. Po kliknięciu na niego
możliwe jest usunięcie wpisu lub zmiany parametrów. Ponadto mieści się tu
przycisk umożliwiający dodanie nowego rekordu, cofnięcia dokonanych zmian
(jeden ruch), oraz dwa przyciski otwierające inne formularze wszystkie
zamówienia oraz zamówienia od tego dostawcy.
Rys. 3. Formularz Dostawcy:
Po kliknięciu na zamówienia od tego
dostawcy otwiera się formularz, który wyświetla tylko i wyłącznie dane
dotyczące wybranego dostawcy (rys. 4). Są tu pola kombi oraz tzw. check box. Drugi z przycisków otwiera
wszystkie zamówienia.
Rys. 4. Zamówienia:
Klikająć na przycisk dodania nowego
rekordu otwiera się formularz dodający (rysunek 5), który umożliwia jedynie
wprowadzanie nowych danych i ma dwa przyciski do przechodzenia do formularzy ze
wszystkimi zamówieniami lub do dostawców. Można stąd wrócić do dostawców lub
otworzyć Towary (rys. 6).
Rys. 5. dodawanie nowych zamówień:
Towary zawierają listę możliwych
produktów, które oferują wszyscy dostawcy. Tutaj także można przeglądać rekordy
za pomocą przycisków nawigacyjnych, jak również, dodawać do listy nowe
artykuły. Z poziomu tego formularza możliwe jest przejście do zamówień oraz
bezpośrednio do dostawców.
Rys. 6. Towary:
Następnym dostępnym z menu głównego jest
formularz Pracownicy (rys. 7). Oprócz imion i nazwisk pracowników zawiera on
podformularz ze zleceniami, za które odpowiedzialna jest dana osoba. Oprócz
podstawowych opcji dodawania (rys. 8) i przeglądania rekordów możliwe jest
wyświetlenie w nowym oknie szczegółowych informacji o pracowniku (rys. 9).
Rys. 7. Pracownicy:
Rys. 8. Dodaj pracownika: Rys. 9. Szczegółowe informacje o pracowniku:
Na formularzu Pracownicy jest jeszcze
jeden przycisk otwierający Stanowiska (rys. 10). Formularz ten różni sią od
tego, który dostępny jest z menu głównego tym, że pokazuje wszystkich
pracowników o takim samym stanowisku co osoba, o której informacje były
aktualnie przeglądane. Informacje te umieszczone są w podformularzu.
Kolejny formularz prezentuje dane o
klientach (rys. 11). Ten również zawiera podformularz, w którym wyświetlane są
wszystkie informacje o zleceniach danego klienta. Zarówno te dane jak i dane
klientów można edytować po kliknięciu na przycisk Edytuj.
Rys. 10. Stanowiska wywoływane z formularza Pracownicy:
Rys. 11. Formularz Klienci:
Stanowiska (rys. 12) otwierane z menu głównego oferują możliwość
wybrania interesującego na stanowiska z licty kombi i wyświetlenie w
podformularzu wszystkich pracowników z tej grupy. Informacje o pracownikach
ograniczają się do imienia, nazwiska, numeru identyfikacyjnego osoby
zatrudnionej oraz wysokości wynagrodzenia. Wybrana na liście kombi posada
wyświetla się na polu pod formularzem dla zwiększenia czytelności.
Rys. 12. Stanowiska:
Kolejny formularz Zlecenia
prezentuje szczegółowe dane o zamówionych usługach przez klientów (rys. 13). Z
niego można przejść do formularza Podwykonawca, wyświetlającego wszystkie
informacje o podwykonawcy, który jest odpowiedzialny za dany projekt (rys. 14).
Zawiera on podformularz ze wszystkimi zleceniami, z którymi jest powiązany. Za
pomocą oddzielnych przycisków można edytować wszystkie rekordy.
Rys. 13. Zlecenia:
Rys.
14. Informacje o podwykonawcy:
Z menu głównego można wejść również do formularza Podwykonawcy, ale z
możliwością przeglądania wszystkich z nich.
Raporty
Oprócz tych wszystkich przycisków do
formularzy z menu głównego jest jeszcze jeden ostatni. Pod przyciskiem
symbolizującym zeszyt (rys. 15) mieszczą się wszystkie dostępne raporty (rys.
16), powstałe na podstawie tabel oraz specjalistyczne, z wyszukanymi i
odfiltrowanymi danymi, jak na przykład Lista zleceń niewykonanych.
Rys. 15. Przycisk Raporty:
Rys. 16. Formularz Raporty:
Przy każdym raporcie umieszczone są po trzy przyciski:
ˇ podgląd
ˇ wysyłanie pocztą e-mail
ˇ drukowanie
Szczególnej uwagi wymaga ostatni z
dostępnych raportów, ponieważ generuje się on dynamicznie na podstawie podanego
parametru. Raport ten powstanie na podstawie zlecenia, którego nazwę poda
uzytkownik w okienku dialogowym. Poniżej na liście (List Box) znajduje się ułożony alfabetycznie, samoaktualizujący
się spis wszystkich rodzajów zleceń. Po kliknięciu jednego z trzech
przycisków, znajdujących się obok nazwy raportu, należy podać nazwę
interesującej nas grupy zleceń.
Rys. 17. Przykład raportu - Stanowiska:
Fragmenty
kodu źródłowego z komentarzem
Przyciski poleceń w większości formularzy oprogramowane są w taki sam
sposób, dlatego opiszę w sposób ogólny wybrane z nich:
Option Compare Database
Option Explicit
Private Sub Edytuj_Click()
If Me.AllowEdits = False Then
Me.AllowEdits = True
Edytuj.Caption = "Koniec edycji"
Else
Edytuj.Caption = "Edycja"
DoCmd.DoMenuItem acFormBar,
acRecordsMenu, acSaveRecord, ,
acMenuVer70
Me.AllowEdits = False
End If
End Sub
Po kliknięciu w przycisk do edycji rekordów w formularzach sprawdzane
jest czy można dokonywać zmian informacji w bazie. Robi się to za pomocą
wyrażenia Me.AllowEdits. Jeśli nie ma
pozwolenia to sam je włącza, a na przycisku zmienia się etykieta na "Koniec edycji", aby
użytkownik klikną przycisk ponownie po zakończeniu edycji i ustawił wartość
logiczną wyrażenia Me.AllowEdits na False.
Private Sub FirstRec_Click()
On Error GoTo
Err_FirstRec_Click
DoCmd.GoToRecord , , acFirst
Exit_FirstRec_Click:
Exit Sub
Err_FirstRec_Click:
MsgBox Err.Description
Resume Exit_FirstRec_Click
End Sub
Przycisk FirstRec przechodzi do
pierwszego rekordu w danym formularzu. W razie błędu wyświetla informację
opisującą błąd.
Private Sub PrevRec_Click()
On Error GoTo Err_PrevRec_Click
DoCmd.GoToRecord , , acPrevious
Exit_PrevRec_Click:
Exit Sub
Err_PrevRec_Click:
MsgBox Err.Description
Resume Exit_PrevRec_Click
End Sub
Przycisk PrevRec przechodzi do
poprzedniego rekordu formularza. W razie błędu wyświetla informację opisującą
błąd.
Private Sub NextRec_Click()
On Error GoTo
Err_NextRec_Click
DoCmd.GoToRecord , , acNext
Exit_NextRec_Click:
Exit Sub
Err_NextRec_Click:
MsgBox Err.Description
Resume Exit_NextRec_Click
End Sub
Przycisk NextRec przechodzi do
kolejnego rekordu. W razie błędu wyświetla informację opisującą błąd.
Private Sub LastRec_Click()
On Error GoTo Err_LastRec_Click
DoCmd.GoToRecord , , acLast
Exit_LastRec_Click:
Exit Sub
Err_LastRec_Click:
MsgBox Err.Description
Resume Exit_LastRec_Click
End Sub
Przyciskiem LastRec przechodzimy do ostatniego dostępnego rekordu.
Private Sub
AddNewRec_Click()
On Error GoTo Err_AddNewRec_Click
DoCmd.GoToRecord , , acNewRec
Exit_AddNewRec_Click:
Exit Sub
Err_AddNewRec_Click:
MsgBox Err.Description
Resume Exit_AddNewRec_Click
End Sub
Klikając w AddNewRec dodawany
jest nowy rekord. Wszystkie pola są puste i zachęcają do uzupełnienia ich
nowymi danymi.
Private Sub DelRec_Click()
On Error GoTo Err_DelRec_Click
If Me.AllowDeletions = False Then
Me.AllowDeletions = True
End If
DoCmd.DoMenuItem acFormBar,
acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar,
acEditMenu, 6, ,
acMenuVer70 Me.AllowDeletions = False
Exit_DelRec_Click:
Exit Sub
Err_DelRec_Click:
MsgBox Err.Description
Resume Exit_DelRec_Click
End Sub
Możliwe jest także usuwanie rekordów z bazy danych przez kliknięcie DelRec. Podobnie jak przy edycji
sprawdzane są prawa dostępu (prawa do kasowania danych). Jeśli ich nie ma są
włączane i wykonywana zostaje dalsza instrukcja kasująca rekord.
Private Sub UndoRec_Click()
On Error GoTo Err_UndoRec_Click
DoCmd.DoMenuItem acFormBar,
acEditMenu, acUndo, , acMenuVer70
Exit_UndoRec_Click:
Exit Sub
Err_UndoRec_Click:
MsgBox Err.Description
Resume Exit_UndoRec_Click
End Sub
UndoRec cofa dokonane zmiany, ale tylko w
ostatnio zmienianym rekordzie.
Private Sub Powrot_Click()
On Error GoTo Err_Powrot_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "START"
DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Powrot_Click:
Exit Sub
Err_Powrot_Click:
MsgBox Err.Description
Resume Exit_Powrot_Click
End Sub
Przycisk Powrót powoduje wrócenie do głównego menu. Otwierany
jest formularz startowy, a sam jest zamykany.
Private Sub
OtworzZamowienia_Click()
On Error
GoTo
Err_OtworzZamowienia_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Zamowienia"
stLinkCriteria =
"[IDdostawy]=" &
Me![IDdostawcy]
DoCmd.Close
DoCmd.OpenForm stDocName, , ,
stLinkCriteria
Exit_OtworzZamowienia_Click:
Exit Sub
Err_OtworzZamowienia_Click:
MsgBox Err.Description
Resume Exit_OtworzZamowienia_Click
End Sub
Klikając na OtwórzZamówienia otwierany
jest formularz Zamówienia. Na jedną rzecz należy zwrócić uwagę. Formularz
jest otwierany, ale tylko dla wybranych danych. Ustalane jest kryterium jakie
muszą spełniać dane wyświetlone w nowo-otwartym formularzu. Tutaj jest to ID
dostawcy. Dane obydwu formularzy będą dotyczyły jednego i tego samego dostawcy.
Private Sub Form_Open(Cancel As Integer)
Dim X
Dim starter
X = 0
DoCmd.OpenForm "START", acNormal, , , , acHidden
Forms!start.InsideHeight = 0
Forms!start.Visible = True
While Forms!start.InsideHeight < 1000 * 8
X = X + 151.2
Forms!start.InsideHeight = X DoCmd.MoveSize 8 * 2000 - X * 1.5
starter = Timer
Do While Timer < starter + 0.001
DoEvents
Loop
Wend
End Sub
Otwierając formularz START, który
ładuje się automatycznie przy starcie aplikacji, uruchamiana jest ta procedura.
Powoduje ona pojawienie się formularza na ekranie w oryginalny sposób. Wyjeżdża
on spoza ekranu na środek jednocześnie rozwijając się w dół. Użyty zastał do
tego zegar w pętli while, który
zarządza czasem i prędkością animacji.