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”.