Microsoft Access relacyjna baza danych - ordona.internetdsl.pl · wszystkie dane do tabel i utworzy...

52
Strona 1 z 52 Microsoft Access – relacyjna (?) baza danych 1. Informacje ogólne Microsoft Access jest prawdziwie zaawansowanym i profesjonalnym programem baz danych, dostępny równieŜ dla niedoświadczonych uŜytkowników. Microsoft Access nie jest, jak często się mylnie uwaŜa, bazą danych, lecz systemem zarządzającym bazą danych (DBMS – Database Managment System), za pomocą którego moŜna tworzyć i administrować bazy danych. Access naleŜy przy tym do systemów zarządzania relacyjnymi bazami danych. Oznacza to, Ŝe poszczególne tabele mogą być ze sobą powiązane. Za pomocą programu Microsoft Access moŜna zarządzać wszystkimi niezbędnymi informacjami uŜywając jednego pliku bazy danych. W pliku takim moŜna dzielić dane na odrębne części zwane tabelami. Za pomocą formularzy elektronicznych moŜna oglądać, dodawać i aktualizować dane w tabelach; za pomocą kwerend moŜna znajdować i pobierać tylko te dane, które są rzeczywiście aktualnie niezbędne; za pomocą raportów moŜna analizować i drukować dane w określonym przez siebie ukladzie. Pomimo tego Ŝe wszystkie obiekty bazy danych znajdują się w jednym pliku istnieje moŜliwość importowania/eksportowania pojedynczych tabel. Najlepiej jest przechowywać dane tworząc po jednej tabeli dla kaŜdego typu informacji, które mają być analizowane. Dane z róŜnych tabel moŜna później lączyć razem w kwerendach, formularzach lub raportach – naleŜy w tym celu zdefiniować relacje między tabelami. Architektura pakietu Access - program glówny: lączy funkcje: o programu dla projektanta o interakcyjnego narzędzia do operowania danymi o interpretera wykonującego gotowe aplikacje runtime i generator dyskietek instalacyjnych (w pakiecie Access Developer's Kit) W MS Access istnieje moŜliwość korzystania z serwerów SQL przez ODBC (Open Database Connectivity) oraz moŜliwość udostępniania wlasnych danych przez ODBC ( np. dla Visual Basica, Visual C++). Programowanie w Visual Basic for Application jest niezwykle proste co nierzadko zachęca projektantów do tworzenia za pomocą Accessa malych systemów baz danych: do uŜytku prywatnego lub dla malych biur.

Transcript of Microsoft Access relacyjna baza danych - ordona.internetdsl.pl · wszystkie dane do tabel i utworzy...

Strona 1 z 52

Microsoft Access – relacyjna (?) baza danych

1. Informacje ogólne

Microsoft Access jest prawdziwie zaawansowanym i profesjonalnym programem baz danych, dostępny równieŜ dla niedoświadczonych uŜytkowników. Microsoft Access nie jest, jak często się mylnie uwaŜa, bazą danych, lecz systemem zarządzającym bazą danych (DBMS – Database Managment System), za pomocą którego moŜna tworzyć i administrować bazy danych. Access naleŜy przy tym do systemów zarządzania relacyjnymi bazami danych. Oznacza to, Ŝe poszczególne tabele mogą być ze sobą powiązane.

Za pomocą programu Microsoft Access moŜna zarządzać wszystkimi niezbędnymi informacjami uŜywając jednego pliku bazy danych. W pliku takim moŜna dzielić dane na odrębne części zwane tabelami. Za pomocą formularzy elektronicznych moŜna oglądać, dodawać i aktualizować dane w tabelach; za pomocą kwerend moŜna znajdować i pobierać tylko te dane, które są rzeczywiście aktualnie niezbędne; za pomocą raportów moŜna analizować i drukować dane w określonym przez siebie układzie. Pomimo tego Ŝe wszystkie obiekty bazy danych znajdują się w jednym pliku istnieje moŜliwość importowania/eksportowania pojedynczych tabel.

Najlepiej jest przechowywać dane tworząc po jednej tabeli dla kaŜdego typu informacji, które mają być analizowane. Dane z róŜnych tabel moŜna później łączyć razem w kwerendach, formularzach lub raportach – naleŜy w tym celu zdefiniować relacje między tabelami.

Architektura pakietu

• Access - program główny: łączy funkcje: o programu dla projektanta o interakcyjnego narzędzia do operowania danymi o interpretera wykonującego gotowe aplikacje

• runtime i generator dyskietek instalacyjnych (w pakiecie Access Developer's Kit)

W MS Access istnieje moŜliwość korzystania z serwerów SQL przez ODBC (Open Database Connectivity) oraz moŜliwość udostępniania własnych danych przez ODBC ( np. dla Visual Basica, Visual C++).

Programowanie w Visual Basic for Application jest niezwykle proste co nierzadko zachęca projektantów do tworzenia za pomocą Accessa małych systemów baz danych: do uŜytku prywatnego lub dla małych biur.

Strona 2 z 52

2. Obiekty bazy danych MS Access

1.Tabele

Tabela jest zbiorem danych dotyczących określonego tematu, jak produkty i dostawcy. UŜywanie oddzielnych tabel dla kaŜdego tematu eliminuje duplikowanie danych co czyni przechowywanie danych bardziej efektywnym i eliminuje błędy wprowadzania danych. Tabele organizują dane w kolumnach (zwanych polami) i w wierszach (zwanych rekordami).

2. Formularze Formularzy moŜna uŜywać w wielu zastosowaniach. Większość informacji zawartych pochodzi z odpowiedniego źródła rekordów. Pozostałe informacje przechowywane są w projekcie formularza. Za pomocą formularzy moŜna wpisywać dane, przeglądać wpisane informacje, drukować zawartość bazy i sterować działaniem programu. NiezaleŜnie od wyglądu i przeznaczenia formularze maja wspólna cechę - słuŜą uporządkowaniu i ujednoliceniu danych wprowadzanych przez wypełniającego formularz. Z drugiej strony osoba wypełniająca formularz równieŜ ma ułatwioną pracę - nie musi bowiem wprowadzać informacji bezpośrednio do tabeli i obserwować gęstwiny kolumn i rekordów.

Strona 3 z 52

3. Kwerendy Termin ten powstał z angielskiego słowa query. Jego polskim odpowiednikiem jest zapytanie. Za pomocą kwerend moŜna wydawać Accessowi polecenia przeszukania bazy danych i udzielenia odpowiedzi na zadane pytanie. Kwerend moŜna uŜywać do wyświetlania, zmiany i analizy danych. MoŜna ich teŜ uŜywać jako źródła rekordów dla formularzy i raportów. Większość informacji zawartych w raporcie pochodzi z odpowiedniego źródła rekordów: tabeli, kwerendy lub wyraŜenia SQL. Pozostałe informacje są przechowywane w projekcie raportu.

4.Raporty Raport jest wygodnym sposobem prezentacji danych w postaci wydrukowanej. UŜytkownik ma pełną kontrolę nad rozmiarem i wyglądem wszystkich elementów raportu, dzięki czemu moŜe wyświetlać dane w Ŝądany sposób.

Strona 4 z 52

5. Makra Makro jest akcją lub zestawem akcji, z których kaŜda wykonuje określoną operację, taką jak otwarcie formularza lub wydrukowanie raportu. Makra pomagają zautomatyzować często wykonywane zadania. MoŜna na przykład uruchamiać makro drukujące raport, gdy uŜytkownik klika przycisk polecenia. Makropolecenia umoŜliwiają pisanie prostych programów, pozwalających na uproszczenie i zautomatyzowanie pracy z bazą danych.

6. Moduły

Moduł jest zbiorem deklaracji i procedur języka Visual Basic for Applications przechowywanych razem jako jedna całość. Moduły maja takie samo przeznaczenie, jak Makropolecenia, cechują je jednak duŜo większe moŜliwości. Są stosowane tam, gdzie makropolecenia nie wystarczają.

Istnieją dwa podstawowe typy modułów: moduły klasy i moduły standardowe. KaŜda procedura w module moŜe być procedurą typu Function lub procedurą typu Sub.

• Moduły klasy Moduły formularzy i moduły raportów są modułami klasy związanymi z określonym formularzem lub raportem. Moduły formularza i raportu często zawierają procedury zdarzeń, które są uruchamiane w odpowiedzi na zdarzenie formularza lub raportu. Procedur zdarzeń moŜna uŜywać do sterowania działaniem formularzy i raportów oraz ich odpowiedziami na akcje uŜytkownika, takie jak np. kliknięcie przycisku polecenia.

• Moduły standardowe

Moduły standardowe zawierają ogólne procedury, które nie są związane z Ŝadnym innym obiektem, oraz często uŜywane procedury, które moŜna uruchamiać z dowolnego miejsca w bazie danych

Strona 5 z 52

3. Projektowanie bazy danych Zanim wykorzystamy programu Microsoft Access do budowania tabel, formularzy i innych obiektów, które złoŜą się na bazę danych, naleŜy poświęć trochę czasu na zaprojektowanie bazy danych. Dobry projekt jest podstawą utworzenia bazy danych, która pozwoli na szybkie, dokładne i skuteczne wykonywanie zamierzonych celów. Oto podstawowe kroki w projektowaniu bazy danych:

1. Określenie celu, któremu ma słuŜyć baza danych Pierwszym krokiem projektowania bazy danych programu Microsoft Access jest określenie celu, któremu ma słuŜyć baza i sposobu jej uŜywania. Konieczne jest określenie jakich informacji ma dostarczyć baza danych. Na tej podstawie moŜna określić, jakie zagadnienia będą analizowane w bazie danych (tabele) i jakie informacje mają określać kaŜde zagadnienie (pola w tabelach).

2. Określenie tabel, które znajdą się w bazie danych

Określenie tabel moŜe być najtrudniejszym etapem procesu projektowania bazy danych. Powodem tego jest fakt, Ŝe wyniki, których ma dostarczyć baza danych - raporty gotowe do wydrukowania, formularze przeznaczone do wykorzystania, pytania, na które trzeba odpowiedzieć - nie zawsze zawierają bezpośrednie wskazówki o strukturze tworzących je tabel. Projektując tabele naleŜy mieć na uwadze przedstawione poniŜej podstawowe zasady projektowania: - Ta sama informacja nie powinna być wielokrotnie wprowadzona do jednej lub kilku tabel.

JeŜeli informacja jest przechowywana tylko w jednej tabeli, moŜna ją uaktualnić zmieniając dane tylko w jednym miejscu. Tak jest łatwiej, a ponadto unika się wystąpienia niezgodności danych zapisanych w róŜnych miejscach. Na przykład, dobrze jest zapisać numer telefonu i adres klienta tylko raz, w jednej tabeli.

- KaŜda tabela powinna zawierać informacje tylko na jeden temat. JeŜeli tabela zawiera dane na temat jednego zagadnienia moŜna przetwarzać je niezaleŜnie od danych dotyczących innych zagadnień. Na przykład, adresy klientów będą przechowywane w innej tabeli niŜ zamówienia. W ten sposób moŜna usunąć jakieś zamówienie, zachowując dane o kliencie.

3. Określenie pól, które znajdą się w tabelach

KaŜda tabela zawiera informacje na temat jednego zagadnienia, a kaŜde pole w tabeli zawiera jedną daną dotyczącą tego zagadnienia, któremu poświęcona jest tabela. Na przykład, tabela poświęcona klientom moŜe zawierać pola z nazwą firmy, adresem, miastem, krajem i numerem telefonu. Zabierając się do projektowania pól w tabelach dobrze jest pamiętać o następujących wskazówkach: - NaleŜy powiązać kaŜde pole bezpośrednio z zagadnieniem, którego dotyczy tabela. - Nie naleŜy wprowadzać danych pośrednich lub obliczonych (danych, które są wynikiem

wyraŜenia).

Strona 6 z 52

- NaleŜy uwzględnić wszystkie potrzebne informacje. - Informacje naleŜy przechowywać w moŜliwie najmniejszych jednostkach logicznych (na

przykład Imię oraz Nazwisko, a nie Dane personalne).

4. Przypisanie polom jednoznacznych wartości

Aby program Microsoft Access mógł powiązać informacje przechowywane w róŜnych tabelach na przykład, aby powiązać klienta ze wszystkimi jego zamówieniami kaŜda tabela w bazie danych musi zawierać pole lub zbiór pól, które jednoznacznie określają kaŜdy rekord. Takie pole lub zbiór pól nazywany jest kluczem podstawowym.

5. Określenie relacji między tabelami

Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do programu Microsoft Access informacje na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. W tym celu definiuje się relacje między tabelami.

6. Wprowadzenie danych i utworzenie innych obiektów bazy danych

Kiedy okaŜe się, Ŝe struktura tabel spełnia opisane powyŜej kryteria, moŜna wprowadzić wszystkie dane do tabel i utworzyć dowolne kwerendy, formularze, raporty, makra i moduły.

7. Zastosowanie narzędzi analizy programu Microsoft Access

Program Microsoft Access jest wyposaŜony w dwa narzędzia, które pomagają udoskonalić projekt bazy danych. Kreator analizy tabel potrafi sprawdzić projekt przeglądając jednorazowo jedną tabelę, zaproponować nową strukturę tabeli i - jeśli to ma sens - zamienić tabelę w kilka tabel połączonych relacjami. Analizator wydajności potrafi przeprowadzić analizę całej bazy danych, sformułować zalecenia i propozycje dotyczące wprowadzenia ulepszeń. Analizator wydajności moŜe teŜ wprowadzić te zalecenia i propozycje.

Strona 7 z 52

4. Projekt bazy danych i normalizacja W trakcie tworzenia aplikacji w Accessie powinieneś przez cały czas pamiętać, Ŝe kaŜda z tworzonych przez Ciebie aplikacji jest bazą danych. Aby tworzyć szybsze i bardziej wydajne aplikacje, musisz poznać i zrozumieć pojęcie normalizacji baz danych . 4.1. Relacyjne systemy zarządzania bazami danych (RDBMS)

W ksiąŜkach i czasopismach wielokrotnie moŜna spotkać się z pojęciem – relacyjne systemy zarządzania bazami danych (ang. Relational Database Management Systems – RDBMS). Co Access ma wspólnego z modelem RDBMS. Model ten został stworzony w 1970 roku przez pracownika firmy IBM, dr E.F. Codda. Celem ustalonych w modelu RDBMS zasad było uniezaleŜnienie funkcjonowania interfej-sów od zmian dokonywanych w modelu danych. Produkty RDBMS uŜywają wspólnych elementów danych, takich jak np. ID , aby połączyć wiersze w dwóch róŜnych tabelach, między którymi zachodziła relacja, a takŜe uŜywają tych pól w sprzęŜeniu. Istnieje 13 zasad, które produkt musi spełnić, aby moŜna go było nazwać Relacyjnym Systemem Zarządzania Bazami Danych. Niektórzy z krytyków Accessa twierdzą, Ŝe nie spełnia on tych wymagań, jednakŜe nie jest błędem zaliczenie Accessa do grupy projektów RDBMS. Oto 13 zasad relacyjnych i ich zastosowanie w Accessie.

Zasada dr Codda

Nazwa zasady Opis Komentarz dotyczący Accessa

Zasada 0. Zasada tworzenia KaŜdy program typu RDBMS musi być w stanie zarządzać bazami danych jedynie za pomocą swoich zdolności relacyjnych. Jeśli system działa na zasadach operowania danymi rekord-po-rekordzie, nie moŜemy go nazywać systemem w pełni relacyjnym

Access był pierwszą na rynku, działającą w systemie Windows bazą danych, która przestrzegała tej zasady. Access, w przeciwieństwie do niektórych systemów, nie stosuje numeracji rekordów

Zasada 1. Informacja Wszystkie dane w relacyjnej bazie przedstawiane są jako wartości w tabelach. Dane nie mogą być przechowywane w Ŝaden inny sposób

Access przechowuje dane jako tabele, w aparacie baz danych Jet1

Zasada 2. Gwarantowany dostęp

Poprzez uŜycie kombinacji wartości klucza podstawowego, nazwy tabeli i nazwy kolumny, musi istnieć dostęp do dowolnej partii danych

Access przestrzega tej zasady poprzez uŜycie kluczy głównych. Jeśli sam nie utworzysz w tabeli klucza głównego, Access zaŜąda, abyś to zrobił

Zasada 3. Brakujące informacje

Program musi obsługiwać wartości Null. Wartości te przedstawiają brakujące lub bezuŜyteczne informacje

Access obsługuje wartości Null dla brakujących informacji. Jednocześnie pozwala uniknąć wprowadzania wartości Null poprzez uŜycie pól wymaganych.

Zasada 4. Katalog systemu Opis bazy danych lub „katalog” na poziomie logicznym jako wartości tabelaryczne. Język relacyjny (SQL) powinien móc działać na projekcie bazy danych w taki sam sposób, w jaki działa na danych przechowywanych w strukturze

Katalog ten umieszczony jest w aparacie bazy danych Microsoft Jet. Do stworzenia zapytania dotyczącego katalogu systemu moŜesz uŜyć obiektu Active Data o nazwie OpenSchema. SQL DDL daje Ci moŜliwość tworzenia tabel, indeksów itp.

Zasada 5. Kompletny język Program typu RDBMS musi obsługiwać jasno określony język do operowania danymi (SQL), który w pełni obsługuje definiowanie i operowanie danymi, określanie widoku, ograniczenia integralności, ograniczenia transakcyjne i autoryzację

Access (Jet) w pełni obsługuje SQL dla operowania danymi, określania widoków (kwerendy wybierające) i ograniczeń integralności (Okno Relacje i komenda UTWÓRZ OGRANICZENIE)

1 „Silnik” Jet zarządza bazą danych zawartą w pliku MDB (Accessa). Gdy uruchamiamy plik typu MDB poprzez obiekty

DAO lub ADO, równieŜ uŜywamy do tego silnika Microsoft Jet. Przechowuje on tabele, indeksy i kwerendy, które uruchamia poprzez wbudowany mechanizm zapytań. Jet jest rozbudowaną, wyposaŜoną w kompletny zestaw funkcji, wielowątkową, relacyjną bazą danych.

Strona 8 z 52

Zasada dr Codda

Nazwa zasady Opis Komentarz dotyczący Accessa

Zasada 6. Uaktualnianie widoków

Wszystkie widoki mogą być systemowo uaktualnione. W prawdziwym programie typu RDBMS, większość (ale nie wszystkie) widoków moŜe być uaktualniana

Access był pierwszą bazą danych, umoŜliwiającą uŜycie kwerend aktualizujących

Zasada 7. Ustawianie poziomu uaktualnień

Program typu RDBMS musi nie tylko potrafić pobierać zestawy danych. Musi takŜe potrafić wstawiać, aktualizować i usuwać dane jako zestaw relacyjny

Access spełnia to wymaganie poprzez uŜycie kwerend funkcjonalnych

Zasada 8. Fizyczna niezaleŜność danych

Dane i aplikacja muszą być od siebie fizycznie niezaleŜne. Odpowiedni program typu RDBMS lub „optymalizator” powinny móc śledzić fizyczne zmiany w danych. Przykładowo, aplikacje RDBMS nie powinny ulegać modyfikacji na skutek dodania bądź usunięcia z tabeli indeksu

Access umoŜliwia Ci modyfikowanie obiektów bazy danych, bez konieczności dokonywania zmian w reszcie aplikacji. Jet zawiera takŜe logiczny aparat przechowywania

Zasada 9. Logiczna niezaleŜność danych

Gdy to tylko moŜliwe, aplikacja powinna być niezaleŜna od zmian dokonywanych w tabelach podstawowych. Przykładowo, gdy tabele są łączone w widok, nie powinny następować zmiany w kodzie

Gdy tworzysz w Accessie kwerendę, moŜesz ją z łatwością połączyć z formularzem lub raportem, jakby to była tabela

Zasada 10. NiezaleŜność integralności

Integralność danych musi być definiowalna w języku relacyjnym i przechowywana w katalogu. Ograniczenia w integralności danych mogą być wbudowane w aplikację, jednakŜe podejście to jest obce dla modelu relacyjnego. W modelu relacyjnym integralność powinna być naturalną cechą projektu bazy danych.

Mimo iŜ Microsoft nie umieścił w dokumentacji informacji na temat przechowywania integralności przez aparat Jet, moŜesz tworzyć zasady integralności poprzez SQL. Jet przechowuje te informacje w projekcie bazy danych jako część katalogu.

Zasada 11. NiezaleŜność podziału

Zdolności programu typu RDBMS nie będą ograniczone dzięki umieszczeniu jego komponentów w osobnych bazach danych.

PoniewaŜ silnik Jet przechowuje swoje zasady integralności danych na poziomie aparatu, pozostałe jego komponenty nie mają wpływu na zasady integralności.

Zasada 12. Brak podwersji Jeśli program RDBMS posiada język typu „jeden rekord jednocześnie”, język ten nie moŜe być uŜywany do omijania zasad integralności lub ograniczeń języka relacyjnego. Dlatego teŜ nie wystarczy, by zasady relacyjne zarządzały programem typu RDBMS, ale muszą być prawami nadrzędnymi.

Access umoŜliwia Ci uŜycie obiektów DAO2 i ADO3, aby operować jednym rekordem jednocześnie poprzez aktualizowalne zestawy rekordów. Dzięki tym narzędziom do operowania danymi nie moŜesz naruszyć zasad integralności.

Relacyjne systemy zarządzania bazami danych przewaŜają w kilku punktach nad innymi systemami, w szczególności w procesie projektowania. Programy typu RDBMS korzystają z teorii projektowania relacyjnego, aby tworzyć własne modele projektowe baz danych.

2 Obiekty Data Access (DAO) dostarczają standardowego sposobu dostępu do danych dla Jet. – szczegóły w rozdziale „Historia dostępu do baz danych”

3 Obiekty ActiveX Data (ADO) to model obiektowy, którego moŜna uŜywać w celu pobierania danych z baz OLE.

Strona 9 z 52

4.2. Teoria projektowania relacyjnego Teoria projektowania relacyjnego, opracowana przez dr Codda w celu rozbudowania zasad relacyjnych, składa się z następujących kategorii:

1 Tabele i niepowtarzalność. 2 Klucze obce i domeny. 3 Relacje. 4 Normalizacja danych. 5 Zasady integralności.

Korzystając z teorii projektowania relacyjnego uzyskujesz zalety płynące z lat poszukiwań najlepszego sposobu zarządzania danymi. Niektóre z nich, jakie otrzymasz w wyniku normalizacji bazy danych, to:

• Pewność integralności danych. • Skuteczność przechowywania danych. • MoŜliwość rozwoju bazy danych. • Zachowanie bazy danych jest przewidywalne, gdyŜ jest ona zgodna z wielokrotnie

przetestowanymi zasadami. • PoniewaŜ przestrzegasz tych zasad, inni projektanci baz danych mogą duŜo łatwiej zrozumieć

Twój projekt. • Okno Relacje staje się samo w sobie dokumentem. • Zmiany w schemacie bazy danych są łatwe we wdroŜeniu.

4.2.1. Tabele i niepowtarzalność

Kiedy tworzymy aplikacje bazy danych, kaŜda tabela przedstawia odrębną jednostkę lub proces występujący w rzeczywistym świecie. Tworzymy tabele kontrolujące ludzi, wydarzenia, transakcje finansowe i przedmioty (np. produkty). Zgodnie z teorią relacyjną, musimy przechowywać wszystkie dane w tabelach (zasada 1.) oraz, Ŝe tabela składa się z unikatowych wierszy i kolumn (zasada 2.). Sposobem na zapewnienie unikalności kaŜdej z zasad jest ustawienie klucza głównego dla kaŜdego wiersza.

Klucz główny to pole lub grupa pól (mówimy wtedy o wielopolowym kluczu głównym), które jest unikatowym identyfikatorem tego wiersza. Klucz główny musi być unikatowy. W przeciwnym bowiem wypadku dochodziłoby do naruszenia zasady 2. Access pozwala uczynić pole kluczem głównym, poprzez nadanie mu wartości Klucz w widoku Projekt tabeli. Access sprawdzi wówczas, czy dane w tym polu są unikatowe i nie występują w nim duplikaty. Czasami, gdy przestrzegamy reguł handlowych, podanie unikatowej wartości dla kaŜdego wiersza moŜe być trudne.

Przykładowo, moŜemy utworzyć system zarządzający kontaktami. Podczas projektowania systemu zarządzającego kontaktami, jako klucz moŜemy wybrać Nazwisko, Telefon lub e-mail (pola takie powszechnie nazywane są „polami-kandydatami”). Ogólna zasada projektowania baz danych głosi, Ŝe klucz powinien być jak najprostszy, unikatowy i jak najrzadziej zmieniany. Nazwisko moŜe się zmieniać na skutek zawarcia małŜeństwa, rozwodu itp. Numery telefonów i adresy e-mail zmieniają się ciągle. Dobrym kluczem byłby numer PESEL, ale co, gdy dana osoba nie jest obywatelem polskim? W tej sytuacji Access umoŜliwia Ci utworzenie pola autonumerowanie, które stanie się polem klucza podstawowego.

Strona 10 z 52

4.2.2. Klucze obce i domeny Klucz główny staje się bardzo waŜny, gdy chcesz go uŜyć w innej tabeli. Wartość klucza głównego jednej tabeli, aby przedstawiać rekordy w innej tabeli. Wówczas mówimy o kluczu obcym, który będzie podstawą opisanych w następnej części relacji. Przedstawiona na rysunku poniŜej tabela przechowuje dwa obce klucze: ContactID i ContactTypeID. ContactID to klucz główny jednej tabeli, a ContactTypeID to klucz główny drugiej tabeli .

Gdy uŜywasz kluczy obcych, będą się one zawsze znajdować w tej samej domenie. Domeny są to zbiory wartości, z których pobierane są kolumny. Dobrym przykładem jest StudentID. Jego domeną są wszystkie dostępne w systemie numery PESEL. 4.2.3. Relacje w bazie danych

Po zaprojektowaniu róŜnych tabel dla poszczególnych tematów bazy danych, potrzebny jest sposób na powiązanie zawartych w nich informacji. Pierwszym krokiem w tym procesie jest zdefiniowanie relacji pomiędzy tabelami. Gdy się to zrobi, moŜna tworzyć kwerendy, formularze i raporty pozwalające wyświetlać za jednym razem informacje z róŜnych tabel.

Gdy definiujemy klucze główne i klucze obce, mamy do czynienia z relacjami. Przez relacje rozumiemy zasady obsługiwane na poziomie silnika bazy danych (patrz: Zasada 4. dr Codda). Dzięki relacjom bazę danych moŜna podzielić na małe tabele. Istnienie logicznego związku pomiędzy nimi zapewnia, Ŝe po podziale moŜna uzyskać te same informacje, które znajdowały się w bazie złoŜonej z jednej tabeli.

Access wyróŜnia trzy róŜne typy relacji:

• relacja jeden-do-jednego; • relacja jeden-do-wielu; • relacja wiele-do-wielu.

Aby tworzyć relacje w Accessie, naciskamy znajdujący się w na pasku narzędzi przycisk Relacje lub wybieramy Narzędzia⇒Relacje, aby otworzyć okno Relacje. Zanim jednak omówimy typy relacji naleŜy wprowadzić sobie pojęcie encji. Encja to model, reprezentacja wyobraŜonego lub rzeczywistego obiektu stosowana przy modelowaniu danych podczas analizy informatycznej. MoŜe posiadać atrybuty i operacje. Powinna mieć nazwę w liczbie pojedynczej. Przykłady:

Strona 11 z 52

• OSOBA (atrybuty: imię - ciąg znaków, nazwisko - ciąg znaków) • POJAZD (atrybuty: liczba kół - liczba całkowita, czy moŜe latać - wartość logiczna)

Encja moŜe być równie dobrze obiektem fizycznym jak czytelnik lub ksiąŜka, jak teŜ zdarzeniem lub pojęciem, jak wypoŜyczenie ksiąŜki czy tez zamówienie na jej wypoŜyczenie. Relacja jeden-do-jednego Charakteryzuje się tym ,Ŝe dla kaŜdej instancji jednej z dwóch encji istnieje dokładnie jedna instancja drugiej encji pozostająca z nią w równowaŜnym związku np. czek i opłata ( opłata jest realizowana za pomocą jednego czeku i za pomocą jednego czeku moŜna zrealizować tylko jedną opłatę).Ten typ relacji spotyka się rzadko, poniewaŜ większość informacji powiązanych w ten sposób byłoby zawartych w jednej tabeli. Relacji jeden-do-jednego moŜna uŜywać do podziału tabeli z wieloma polami, do odizolowania części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej. Na przykład, moŜna by utworzyć tabelę do wyszukiwania pracowników uczestniczących w rozgrywkach piłkarskich. Dwie tabele łączy relacja jeden-do-jednego, gdy kaŜdemu wierszowi z jednej tabeli przyporządkowany jest co najwyŜej jeden wiersz z drugiej tabeli. Relacja jeden-do-wielu Charakteryzuje się tym ,Ŝe dla kaŜdej instancji jednej encji istnieje wiele instancji drugiej encji pozostającej z nią w rozwaŜanym związku. Relacja jeden-do-wielu jest realizowana poprzez utworzenie atrybutu w encji po stronie wiele aby umieścić w nim klucz encji znajdującej się po stronie jeden. Tak utworzony atrybut encji po stronie wiele nosi nazwę klucza obcego poniewaŜ jest on głównym kluczem w innej tabeli. Relacja jeden-do-wielu jest najbardziej powszechnym typem relacji. Najpopularniejszy typ relacji, relacja jeden-do-wielu, występuje wtedy, gdy tabela ma wiele (lub nie ma w ogóle) powiązanych rekordów w drugiej tabeli. Czasami tabela po stronie „jeden” nazywana jest tabelą odnośnika. Zazwyczaj, tabele odnośnika zawierają informacje, które będą przekazywane do innych tabel (na przykład, nazwy województw lub kody pocztowe). Relacja wiele-do-wielu W relacji wiele-do-wielu, rekord w tabeli A moŜe mieć wiele dopasowanych do niego rekordów z tabeli B i tak samo rekord w tabeli B moŜe mieć wiele dopasowanych do niego rekordów z tabeli A. Jest to moŜliwe tylko przez zdefiniowanie trzeciej tabeli (nazywanej tabelą łącza), której klucz podstawowy składa się z dwóch pól - kluczy obcych z tabel A i B. Relacja wiele-do-wielu jest definiowana jako dwie relacje jeden-do-wielu z trzecią tabelą. Na przykład, tabele "Zamówienia" i "Produkty" są powiązane relacją wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z tabelą "Opisy zamówień".

Strona 12 z 52

O relacji wiele-do-wielu mówimy wówczas, gdy kaŜdemu wierszowi z jednej tabeli odpowiada wiele wierszy w drugiej tabeli, a kaŜdemu wierszowi z drugiej tabeli odpowiada wiele wierszy w pierwszej. Jedynym sposobem na przedstawienie w Accessie relacji wiele-do-wielu jest uŜycie tabeli „łączącej”, w której jako klucze obce znajdują się klucze główne obu tabel. 4.2.4. Normalizacja danych

Zgodnie z zestawem zasad dr Codda proces projektowania bazy danych nazywany jest normalizacją danych. Dr Codd wyróŜnia sześć poziomów normalizacji. Skoncentrujemy się tutaj na trzech z nich, gdyŜ mają one największy wpływ na decyzje dotyczące projektu bazy:

1. Pierwsza postać normalna. 2. Druga postać normalna. 3. Trzecia postać normalna.

Pierwsza postać normalna

W pierwszej postaci normalnej wszystkie kolumny w tabeli muszą posiadać wartości atomowe. Innymi słowy, kaŜde pole moŜe zawierać tylko jedną wartość, a nie listę wartości lub powtarzającą się grupę danych. Wiele kartotekowych baz danych przechowuje dane w ten sposób, co znacznie utrudnia ich przeszukiwanie. Rysunek 1 (poniŜej) przedstawia przykład tabeli, która nie jest w pierwszej postaci normalnej, poniewaŜ w kolumnie ContactInfo przechowywana jest tablica wartości (telefon, fax, e-mail).

Strona 13 z 52

Rys 1.

Natomiast rysunek 2 jest przykładem tabeli w pierwszej postaci normalnej. Rys 2.

Druga postać normalna

Mimo iŜ tabela przedstawiona na rysunku powyŜej jest w pierwszej postaci normalnej, nie jest jednak w drugiej postaci normalnej.

Mówimy, Ŝe tabela jest w drugiej postaci normalnej, gdy jest w pierwszej postaci normalnej i jednocześnie kaŜde z jej pól nie będących polem klucza głównego jest w pełni zaleŜne od całego klucza głównego. Innymi słowy, część informacji moŜe być przechowywana w innej tabeli i pobierana z niej poprzez odnośnik. Spójrz na tabelę na rysunku powyŜej. Klucz główny składa się z ContactID, ContactInfoID i ContactInfo. Czy kolumna ContactName zaleŜy od części klucza: ContactInfoID i ContactInfo? Nie, gdyŜ jest zaleŜna od pola ContactID. Aby przekształcić tę tabelę do drugiej postaci normalnej, naleŜy informacje o kliencie umieścić w osobnej tabeli odnośnika i utworzyć pomiędzy tabelami przedstawioną na rysunku poniŜej relację jeden-do-wielu. Tabele te są teraz w drugiej postaci normalnej.

Strona 14 z 52

Rys 3.

Trzecia postać normalna

Mimo iŜ tabele na rysunku powyŜej są w pierwszej i drugiej postaci normalnej, nie są jednak w trzeciej postaci normalnej.

Z tabelą w trzeciej postaci normalnej mamy do czynienia, gdy wszystkie pola, nie będące polami

klucza głównego, są wzajemnie zaleŜne.

Dobrym przykładem zaleŜności jest pole obliczeniowe (korzystniej jest nie przechowywać pól obliczeniowych, tylko wyświetlać wyniki obliczeń jako część kwerendy). Na rysunku powyŜej druga tabela przechowuje pola ContactInfoID i ContactType (opis). Jeśli wartość pola ContactType poznajemy dzięki polu ContactInfoID, tabela nie jest w trzeciej postaci normalnej.

Aby otrzymać trzecią postać normalną, naleŜy wyodrębnić z ContactInfo trzecią tabelę i utwórz między tabelami ContactInfo i ContactDetails relację jeden-do-wielu, tak jak na rysunku poniŜej.

Strona 15 z 52

Rys 4.

Korzyści z normalizacji

W poprzednim przykładzie, wiele zyskaliśmy, normalizując początkową, przedstawioną na rysunku 1 tabelę. Tabela początkowa zawierała sposoby porozumiewania się w tablicy wartości, co prawie całkowicie uniemoŜliwiało przeszukiwanie zawartości pola Faks. Dodatkowo, gdy zmieniał się numer telefonu kontaktu lub zachodziła potrzeba dodania nowego sposobu porozumiewania się, jak na przykład adres e-mail, edycja danych była utrudniona i łatwo było o błędy. Pierwsza postać normalna znacznie poprawiła sytuację i zwiększyła elastyczność w kontrolowaniu numerów telefonów, faksów i adresów e-mail naszych kontaktów.

W przedstawionej na rysunku 2 tabeli, która jest w pierwszej, lecz nie jest w drugiej postaci normalnej, zarządzanie danymi dotyczącymi kontaktów jest utrudnione, gdyŜ informacje wielokrotnie się powtarzają. Jeśli masz w bazie 10 numerów telefonów i przechowujesz to samo nazwisko 10 razy, to jest to nie tylko strata przestrzeni dyskowej, ale równieŜ problem, gdy zachodzi potrzeba uaktualnienia wszystkich 10 wpisów, gdy dana osoba zmieniła nazwisko. Utrzymanie spójności w tym przypadku moŜe kosztować duŜo wysiłku.

Strona 16 z 52

Tabele na rysunku 3, mimo iŜ są w pierwszej i drugiej postaci normalnej (wszystkie kolumny zaleŜą od całego klucza), nie są w trzeciej postaci normalnej. Przenosząc dane i uzyskując trzecią postać normalną, uzyskujesz większą elastyczność modelu danych, gdyŜ teraz moŜemy zarządzać typami kontaktów w osobnej tabeli. 4.2.5. Zasady integralności danych

Podczas normalizowania danych powinniśmy równieŜ uwzględnić zasady integralności danych. Większość z zastosowanych zasad będzie zaleŜeć od zdefiniowanych relacji. Podczas określania relacji moŜemy dodatkowo ustawić kaskadowe aktualizowanie i usuwanie rekordów.

Ustawienie aktualizowania kaskadowego rekordów daje nam pewność, Ŝe gdy aktualizujemy

wartość klucza podstawowego tabeli „jeden”, zmiana ta odniesie skutek w tabelach „wielu”. Przykładowo, powiedzmy, Ŝe mamy tabelę odnośnika dla Stanów Zjednoczonych. W tabeli tej

znajduje się miasto Nowy Jork, z kluczem podstawowym NY i opisem Nowego Jorku. Wyobraźmy sobie, Ŝe miasto to odłączyło się i stworzyło swój własny stan (to nie jest fikcja, prawie do tego doszło w roku 1789!). Gdy zmienimy wartości NY na NY1 (lub coś bardziej opisowego), wartości NY we wszystkich podrzędnych tabelach zostaną zmienione na NY1. Jeśli aktualizowanie kaskadowe nie było włączone, musielibyśmy dodać rekord NY1 do tabeli odnośnika, zaktualizować wszystkie rekordy w pod-rzędnej tabeli, a następnie usunąć z tabeli odnośnika rekord NY.

Włączenie usuwania kaskadowego daje nam pewność, Ŝe gdy usuwamy rekord z tabeli „jeden”,

usuwamy równieŜ wszystkie rekordy z tabeli „wielu”. Ma to swoje dobre i złe strony. Jeśli usuwamy jednego z klientów, a usuwanie kaskadowe było włączone, usunięte zostaną wszystkie faktury po stronie „wielu”. W przeciwnym wypadku, usunięcie rekordu z tabeli „jeden” nie będzie wykonane, dopóki nie usuniemy wszystkich rekordów z tabeli „wielu”

Strona 17 z 52

5. Typy danych pól w tabeli Komputer nie jest w stanie odczytać niczego z kontekstu. Gdy adresujemy list, napiszemy na kopercie przecinek zamiast kropki; list i tak dotrze do adresata – listonosz domyśli się, kto ma być jego odbiorcą. Gdyby komputery były listonoszami (tak, jak ma to miejsce w przypadku poczty elektronicznej), wszystkie listy zaadresowane z błędem wracałyby do nadawcy. KaŜda informacja ma określony typ. Opis wydatku jest tekstem. Konto, które obciąŜa wydatek, jest liczbą itd. Aby zapoznać się z opisem pól, naleŜy otworzyć tabelę w trybie projektowania. W kolumnie Typ danych właściwości pól.

TYP DANYCH OPIS Autonumerowanie

Unikatowa liczba kolejna (zwiększana o l) lub liczba losowa, przypisywana przez program Microsoft Access przy dodawaniu nowego rekordu do tabeli. Pola Autonumerowanie nie moŜna aktualizować. Do zapisu uŜywane są 4 bajty

Data/Godzina Pole moŜe zawierać wartości daty i godziny. Akceptowane są daty z przedziału od 100 do 9 999. Do zapisu uŜywanych jest 8 bajtów

Hiperł ącze

Pole maŜe zawierać tekst lub kombinacje tekstu i liczb. Przechowywane są one jako tekst, a uŜywane jako adres hiperłącza . Adres hiperłącza maŜe składać się z trzech części:

• tekstu - wyświetlanego w polu lub w formancie, • adresu - ścieŜki dostępu do pliku (w formacie UNC) lub strony (adres

URL), • podadresu – miejsca w pliku lub na stronie, etykietki ekranowej –

tekstu wyświetlanego jako etykietka. KaŜda z trzech części hiperłącza moŜe zawierać do 2 048 znaków

Kreator odnośników Tworzy pole, które pozwala wybrać wartość z innej tabeli. Wybór tej opcji powoduje uruchomienie Kreatora odnośników. Po zakończeniu pracy z Kreatorem program Microsoft Access ustawia typ danych na podstawie wartości określonych w Kreatorze. Do zapisu uŜywane są 4 bajty

Liczba Dane numeryczne uŜywane w obliczeniach matematycznych. Pole moŜe zawierać liczbę zapisaną przy uŜyciu l, 2. 4 lub 8 bajtów

Nota Pole moŜe zawierać długi tekst lub kombinacje tekstu i liczb. Długość ciągu znaków - od 0 do 65 535

Obiekt OLE Obiekt (arkusz kalkulacyjny programu Microsoft Excel, dokument programu Microsoft Word. grafika, dźwięk lub inne dane binarne) dołączony lub osadzony w tabeli programu Microsoft Access. Rozmiar obiektu ograniczony jest do l gigabajta. Ograniczeniem jest teŜ dostępne miejsce na dysku.

TAK / NIE Wartości Tak i Nie oraz pola zawierające tylko jedna z dwóch wartości (Tak i Nie, Prawda/F olsz lub WI/Wy/). Do zapisu uŜywany jest l bit

Tekst Pole moŜe zawierać kombinacje tekstu i liczb lub liczby nie wymagające obliczeń, np. numery telefonów. Długość ciągu znaków - od 0 do 255

Waluta Pole moŜe zawierać wartości walutowe i dane numeryczne. Są one uŜywane w obliczeniach matematycznych dokonywanych na danych z dokładnością do czterech miejsc po przecinku. Wyniki obliczeń mają dokładność do 15 cyfr po lewej stronie separatora dziesiętnego i do 4 cyfr po prawej stronie separatora. Do zapisu uŜywanych jest 8 bajtów

Strona 18 z 52

Typ Liczba słuŜy do przechowywania liczb. Microsoft Access umoŜliwia wybranie jednej z kilku notacji. MoŜna je wybierać z listy Rozmiar pola. Deklarując sposób zapisu liczb, trzeba wziąć pod uwagę zakres ich wartości i dokładność zapisu. PoniŜej opisane zostały najczęściej uŜywane podtypy liczb. Bajt Liczby naturalne od 0 do 255 Liczba całkowita liczby całkowite od -32 768 do 32 767 Liczba całkowita długa Liczby całkowite od -2 147483648 do 2 147483647 Podwójna precyzja Liczby rzeczywiste o 10 cyfrach znaczących.

Wartości od -1,79769313486232E308 do 1,79769313486232E308 Pojedyncza precyzja Liczby rzeczywiste o 6 cyfrach znaczących.

Wartości od -3,402823E38 do 3,402823E38 Domyślnym podtypem jest Podwójna precyzja. JeŜeli wiemy, ze w danym polu będą występować tylko liczby całkowite o wartości mniejszej niŜ 255, warto uŜyć podtypu Bajt. Zmniejszenie rozmiarów deklarowanych podtypów powoduje zredukowanie rozmiarów bazy danych i zwiększenie szybkości działania. Wybrane podtypy daty i godziny Data ogólna Ustawienie domyślne. Jeśli wartością jest tylko data, nie jest wyświetlana godzina.

Jeśli wartością jest tylko godzina - nie jest wyświetlana data. Ustawienie jest połączeniem ustawień Data krótka i Godzina długa

Data długa Odpowiada ustawieniu Dala długa w oknie dialogowym Właściwości ustawień regionalnych w Panelu sterowania systemu Windows.

Dala średnia Data jest zapisywana w formacie ..dzien-miesiac-rok". np.: 19-cze-94 Dala krótka Odpowiada ustawieniu Data krótka w oknie dialogowym Właściwości ustawień

regionalnych w Panelu sterowania systemu Windows. Godzina długa Odpowiada ustawieniu na karcie Godzina w oknie dialogowym Właściwości

ustawień regionalnych w Panelu sterowania systemu Windows. Godzina średnia Czas jest zapisywany w cyklu 12. godzinnym, np.: 05:34 Godzina krótka Czas jest zapisywany w cyklu 24- godzinnym, np.: 17:34

Strona 19 z 52

6. Historia dostępu do danych Access jest zaawansowanym interfejsem uŜytkownika dla silnika baz danych Microsoft Jet 4.0. NiezaleŜnie od tego, czy jesteśmy tego świadomi, Jet zarządza bazą danych zawartą w pliku MDB. Gdy uruchamiamy plik typu MDB poprzez obiekty DAO lub ADO, równieŜ uŜywamy do tego silnika Microsoft Jet. Przechowuje on tabele, indeksy i kwerendy, które uruchamia poprzez wbudowany mechanizm zapytań. Jet jest rozbudowaną, wyposaŜoną w kompletny zestaw funkcji, wielowątkową, relacyjną bazą danych. Dzisiaj Microsoft Jet uŜywany jest jako aparat bazy danych w ponad 30 produktach firmy Microsoft. MoŜna wśród nich wymienić (oprócz, rzecz jasna, Accessa) takie programy, jak Project, Money, Team Manager, a nawet edukacyjne gry dla dzieci. Jet całkowicie zdominował rynek domowych baz danych, gdyŜ kaŜda jego edycja zawiera coraz nowocześniejsze technologie. Cofnijmy się teraz odrobinę, aby prześledzić historię Microsoft Jet. Jet 1.0 Historia Microsoft Jet rozpoczyna się ponad dziesięć lat temu, kiedy to w firmie Microsoft rozpoczęto wdraŜanie projektu Access. Gdy w 1992 roku Access 1.0 trafił na półki sklepowe, razem z nim na rynek domowych baz danych wszedł Jet 1.0. Zawierał on wiele bardzo potrzebnych opcji domowych baz danych, jak definiowanie danych, kwerendy, zabezpieczenia i indeksowanie. Jet był jednocześnie produktem pionierskim, gdyŜ zawierał wiele nowych opcji, jak na przykład: kwerendy aktualizujące, heterogeniczne sprzęŜenia danych i moŜliwość tworzenia kwerendy w oparciu o inną kwerendę. Opcje te umoŜliwiły programowi Microsoft Access osiągnąć pozycję najpopularniejszej domowej bazy danych. Jet 1.1 Sukces Accessa był zaskoczeniem dla wszystkich, łącznie z firmą Microsoft. W maju 1993 roku wydano Access 1.1 oraz Visual Basic 3.0, a razem z nimi Jet 1.1. Ta edycja umoŜliwiała programistom korzystanie z wielu nowych opcji: poprawionej, zgodnej ze standardem ODBC komunikacji i nowych sterowników ODBC. Od tej pory zaprzestano tworzenia kodu programu poprzez interfejs API ODBC, a dostęp do danych ODBC stał się moŜliwy dla kaŜdego. Jet 1.1 umoŜliwił równieŜ swoim uŜytkownikom łatwe dołączanie zewnętrznych danych, zwłaszcza w nowym formacie Microsoft FoxPro. Poprawiono biblioteki obiektów DAO, a maksymalny rozmiar bazy Jet wzrósł ze 128 MB do 1,1 GB. Jet 2.0 Jet 2.0 został wprowadzony na rynek w kwietniu 1994 roku wraz z bardzo popularnym Accessem 2.0. Dzięki takim opcjom jak wymuszanie reguł poprawności na poziomie silnika bazy, czy integralności referencyjnej Jet 2.0 stał się nowoczesnym aparatem baz danych. Aby zwiększyć jego wydajność, dodano równieŜ zapoŜyczoną z FOX-a technologię Rushmore oraz poprawiono funkcjonowanie SQL i obiektów DAO. Jet 2.0 był równieŜ, bardziej niŜ poprzednie wersje, zgodny z ANSI. Jet 2.5 W październiku 1994 roku firma Microsoft wypuściła na rynek pakiet Service Pack do Accessa 2.0 oraz pakiet sterowników ODBC Desktop Drivers Pack 2.0. Były to równieŜ narodziny Jet 2.5. W tej wersji do konstruowania wyraŜeń Jet uŜywał juŜ VBA, a wsparcie dla źródeł danych ODBC uległo znacznej poprawie. Ulepszono takŜe obsługę aplikacji przeznaczonych dla wielu uŜytkowników. Jet 3.0 Gdy pod koniec 1995 roku Microsoft wypuścił na rynek Access 95, silnik Jet został wprowadzony w 32-bitowe środowisko. Jet stał się zatem 32-bitowym silnikiem baz danych, posiadającym zdolność

Strona 20 z 52

replikacji danych, a takŜe ulepszone opcje ODBC i DAO. Jet 3.0 był bardzo szybkim silnikiem baz danych. Jet 3.5 Wraz z wprowadzeniem na rynek w styczniu 1997 roku pakietu Office 97 oddano do rąk uŜytkowników Jet 3.5. Był on juŜ w pełni 32-bitowym silnikiem baz danych, którego największym ulepszeniem był znaczny wzrost wydajności. Jet 3.5 zawierał takŜe nowe zdolności buforowania danych, poprawione blokowanie stron, ulepszenia w pracy kwerend, ODBCDirect oraz programowe anulowanie poleceń zapisu na dysk. Replikacja została rozszerzona o repliki częściowe, a wsparcie danych zewnętrznych o obsługę danych HTML i Exchange. Jet 3.51 Wypuszczenie na rynek w połowie 1997 roku Jet 3.51, będącego kontynuacją Jet 3.5, prawie nie zostało zauwaŜone. Nowy Jet zawierał ulepszoną metodę defragmentowania i naprawiania plików typu MDB. Opcja naprawiania została włączona w znacznie poprawiony proces defragmentowania. W Jet 3.51 poprawiono błędy dotyczące niskopoziomowej obsługi wielu uŜytkowników, jednakŜe najwaŜniejsze w nim było narzędzie do defragmentowania i naprawy JetCOMP.exe, korzystające z nowej opcji defrag-mentującej. Jet 4.0 W czerwcu 1999 roku, wraz z pakietem Office 2000, Microsoft wypuścił na rynek Jet 4.0. Edycja ta była tym, na co czekali wszyscy programiści. Jet 4.0 zawiera więcej funkcji niŜ wszystkie poprzednie wersje razem wzięte. Większość z nich została dodana dzięki uwzględnieniu zgromadzonych przez lata próśb i uwag programistów. Wersja 4.0 to bardzo rozbudowany program, zawierający tak zaawansowane opcje, jak:

• nowy wbudowany dostawca baz danych OLE; • blokowanie na poziomie rekordów; • pełna obsługa Unicode; • ulepszone typy danych; • poprawione funkcje Autonumerowania; • przeszukiwalne pola typu Memo; • poprawki trybu przeznaczonego dla wielu uŜytkowników; • ulepszenia w replikacji; • nowa składnia SQL (bardziej zgodna z ANSI 92).

Strona 21 z 52

7. Budowanie aplikacji Etapy budowania aplikacji:

• Definiowanie struktury danych: o definiowanie tablic (struktura, typy danych, klucz główny, ograniczenia, indeksy); o określenie relacji (więzów integralności); o wprowadzenie danych testowych

• Wykonanie formularzy: o zaprojektowanie zapytania, na którym będzie oparty formularz; o wykonanie graficznego układu formularza; o dodatkowe oprogramowanie formularza.

• Wykonanie raportów: o zaprojektowanie zapytania dla raportu; o wykonanie graficznego układu raportu; o określenie sortowania i grupowania; o dodatkowe oprogramowanie raportu.

• Wykonanie formularzy i sekcji sterujących (przyciski). • Dodatkowe oprogramowanie aplikacji.

Większość etapów moŜna przyspieszyć wykorzystując kreatory, a potem dopracowując utworzone obiekty. 7.1 Wykonanie formularza Tworzenie formularza

• zdefiniowanie zapytania • uŜycie kreatora formularzy • modyfikacja typów pól i wyglądu formularza • modyfikacja własności formularza i pól • utworzenie przycisków funkcyjnych (z uŜyciem kreatora formantów) • oprogramowanie zdarzeń formularza

Dostępne obiekty na formularzach: • etykiety • pola tekstowe • linie itp. • grupy opcji i przycisków • pola kombi, listy, wyboru • obiekty OLE stałe, powiązane • podformularze • wykresy • Inne: kalendarz itp.

NajwaŜniejsze własności: • formularza

o Dane: źródło rekordów o Wygląd: widok domyślny o Inne: edycja dozwolona, usuwanie dozwolone, dodawanie dozwolone, modalny

Strona 22 z 52

• pól o Dane: źródło formantu (moŜe być wyraŜenie - obliczenia automatyczne), wartość

domyślna, reguła poprawności, komunikat o błędzie o Wygląd: widoczny ,kiedy wyświetlać, własności określające czcionkę, justowanie, kolory i

obramowanie o Inne: nazwa, indeks kolejności dostępu, zatrzymanie przechodzenia

7.2 Wykonanie raportu Tworzenie raportu

• zdefiniowanie zapytania • uŜycie kreatora raportów • utworzenie/modyfikacja grupowania i sortowania • modyfikacja wyglądu raportu • modyfikacja własności raportu i pól • oprogramowanie zdarzeń raportu

Części raportu: • nagłówek i stopka raportu • nagłówek i stopka strony • nagłówek i stopka grupy

Grupy i sortowanie: • dane podzielone wg hierarchii grup • sortowanie określone w ramach kaŜdej grupy (nie obowiązuje sortowanie z zapytania!)

NajwaŜniejsze własności: • raportu

o Dane: źródło rekordów o Wygląd: stopka strony, nagłówek strony (określa, czy nagłówki na wszystkich stronach)

• sekcji o Wygląd: wymuszaj nową stronę, nowy wiersz lub kolumna, trzymaj razem, moŜna

pomniejszać, moŜna zmniejszać • pól

o Dane: źródło rekordów (moŜe być wyraŜenie - obliczenia automatyczne), format, suma bieŜąca

o Wygląd: ukryj duplikaty, moŜna pomniejszać, moŜna powiększać, własności określające czcionkę, justowanie, kolory i obramowanie

o Inne: nazwa

MoŜliwości formatowania raportu: • wydruk wielokolumnowy (np. etykiety) • zmiana strony/kolumny przed/po grupie, utrzymywanie grupy razem • pola sumacyjne (np. do numerowania pozycji) • pola bez powtórzeń • pola „rozciągliwe"

Inne moŜliwości raportów:

Strona 23 z 52

• zastosowanie podraportów (subreports) • eksport w formacie RTF (tylko raporty bez podraportów) • przesyłanie pocztą MS Mail i faksem • umieszczanie grafiki na raportach i formularzach:

o elementy stałe o rysunki z bazy o wykresy MS Graph

8. Przykład bazy danych 8.1. Cel i wymagania systemu informatycznego System wstępnie nazwany Układ Słoneczny. Głównym jego celem jest zebranie informacji dotyczących Układu Słonecznego oraz szybkie i efektywne wyszukiwanie informacji. 8.2. Zadania stawiane przed systemem

1) UmoŜliwienie gromadzenia danych o planetach i ich księŜycach System pozwoli na wprowadzanie nowych informacji oraz łatwe uzupełnianie, zmianę i usuwanie tych danych.

2) Przeglądanie danych o planetach 3) Wyszukiwanie planet, księŜyców spełniających określone kryteria

System umoŜliwi wyszukiwanie planet według róŜnorodnych kryteriów: - Masy - Okresu obiegu wokół Słońca - Okresu obrotu wokół własnej osi - Przyspieszenia grawitacyjnego - Promienia - Ilości satelitów - MoŜliwa jest dowolna kombinacja tych kryteriów.

4) Generowanie raportów dotyczących planet i ich księŜyców

Strona 24 z 52

8.3. Projekt implementacji systemu

8.3.1 Wybór narzędzia programowania Baza danych zostanie stworzona za pomocą Accessa, narzędzia umoŜliwiającego w sposób łatwy i szybki stworzenie aplikacji .

8.3.2 Dane wprowadzane do systemu

System umoŜliwi wprowadzanie następujących danych dotyczących planet i ich księŜyców :

� dane dotyczące planet :

� Nazwa planety � Średnia odległość od Słońca � Odległość planety w aphelium � Odległość planety w peryhelium � Promień planety : równikowy i biegunowy � Okres obiegu wokół Słońca w latach � Okres obrotu wokół własnej osi w godzinach � Masa � Przyspieszenie grawitacyjne � Prędkość ucieczki � Ilość satelitów � Charakterystyka planety

� dane dotyczące księŜyców :

� Nazwa księŜyca � Średnica � Odległość od planety w kilometrach � Okres obiegu wokół planety � Jasność (magnitudo) � Charakterystyka księŜyca

� oraz biblioteki zdjęć planet i księŜyców:

Strona 25 z 52

8.3.3 Określenie tabel, które znajdą się w bazie

Uwaga : Strukturę tabel oraz relacje między nimi moŜna wygenerować za pomocą narzędzia Dokumentator ( Narzędzia -> Analizuj -> Dokumentator ).

Tabela Planety Nazwa Typ Rozmiar ID Liczba całkowita długa (autonumerowanie) 4 NAZWA Tekst 20 SREDNIA_ODLEGLOSC Pojedyncza precyzja 4 ODLEGLOSC_PERYHELIUM Pojedyncza precyzja 4 ODLEGLOSC_APHELIUM Pojedyncza precyzja 4 PROMIEN_ROWNIKOWY Pojedyncza precyzja 4 PROMIEN_BIEGUNOWY Pojedyncza precyzja 4 OBROT_WOKOL_SLONCA Pojedyncza precyzja 4 OBROT_WOKOL_OSI Data/Godzina 8 MASA Pojedyncza precyzja 4 PRZYSPIESZENIE_GRAW Pojedyncza precyzja 4 PREDKOSC_UCIECZKI Pojedyncza precyzja 4 LICZBA_SATELITOW Liczba całkowita długa 4 OPIS Nota -

Tabela Ksiezyce Nazwa Typ Rozmiar ID_KSIEZYCA Liczba całkowita długa (autonumerowanie) 4 ID_PLANETY Liczba całkowita długa 4 NAZWA Tekst 20 SREDNICA Pojedyncza precyzja 4 ODLEGLOSC Pojedyncza precyzja 4 OKRES_OBIEGU Pojedyncza precyzja 4 JASNOSC Pojedyncza precyzja 4 OPIS Nota - Tabela Zdjecia_planet Nazwa Typ Rozmiar ID_ZDJECIA Liczba całkowita długa (autonumerowanie) 4 ID_PLANETY Liczba całkowita długa 4 ZDJECIE Obiekt OLE -

Strona 26 z 52

Tabela Zdjecia_ksiezycow Nazwa Typ Rozmiar ID_ZDJECIA Liczba całkowita długa (autonumerowanie) 4 ID_KSIEZYCA Liczba całkowita długa 4 ZDJECIE Obiekt OLE -

8.3.4 Diagram encji przykładowej bazy danych

Strona 27 z 52

8.3.5 Opis interfejsu uŜytkownika

Dodawanie, modyfikowanie planet i ich księŜyców umoŜliwiają poniŜsze formatki :

Strona 28 z 52

Wyszukiwanie w bazie danych kandydatów spełniających dowolną kombinację kryteriów wymienionych w punkcie 8.2 niniejszego opracowania, moŜliwe jest dzięki poniŜej przedstawionej formatce:

Realizowane jest to za pomocą dynamicznie tworzonego zapytania SQL. Dla przykładu, aby wyszukać wszystkie planety mające więcej niŜ trzy księŜyce naleŜy skierować zapytanie SQL do bazy danych: SELECT * FROM PLANETY WHERE [Ilosc_satelitow] > 3

Strona 29 z 52

9. Tworzenie bazy danych – krok po kroku ( prawie ☺☺☺☺ ) Access 2003

1. Klikamy w ikonkę „Nowy” , wybieramy „Pusta baza danych” i podajemy nazwę bazy danych. Pojawi się okno jak na rysunku 1.

Rys. 1 2. Zaczynamy tworzyć tabele. W tym celu „klikamy” w „Utwórz tabelę w widoku projektu”. Pojawi

się okno, w którym wprowadzamy nazwy pól, ich typy, ewentualny opis zgodnie z naszym projektem ( patrz punkt 8.3.3 ). Rysunek 2 przedstawia wypełnioną tabelę „Planety”. Uwaga : podczas zapisu Access zapyta się czy chcemy zdefiniować klucz podstawowy. Na to pytanie odpowiadamy „Nie” – klucze wprowadzimy sobie później , chociaŜ nic nie przeszkadza abyśmy zrobili sobie to teraz.

Rys. 2

Strona 30 z 52

3. Podobnie postępujemy z następnymi tabelami : Ksiezyce, Zdjęcia. Uwaga : proponuję zarówno w nazwach pól jak i nazwach tabel nie stosować polskich znaków oraz znaków specjalnych na przykład spacji (zamiast niej stosujemy podkreślenie). 4. Teraz spoglądając na diagram encji musimy określić klucze w tabelach. W tym celu „klikamy” w

tabelę prawym przyciskiem myszy i z otworzonego w ten sposób menu wybieramy „Widok projektu”. Otworzy się okno tabeli jak przy projektowaniu. Klikamy w pole, które ma być kluczem podstawowym i prawym przyciskiem myszy otwieramy meny, z którego wybieramy „Klucz podstawowy” – przy danym polu pojawi się symbol klucza. Ponowne załoŜenie klucza na polu, które juŜ go posiada powoduje jego usunięcie. Oczywiście mając juŜ pewne wyobraŜenie o relacjach między tabelami mogliśmy klucze wprowadzić juŜ w momencie projektowania (zakładania) tabel.

5. Po określeniu kluczy z menu „Narzędzia” wybieramy „Relacje” – pojawi się okno, z którego

wybieramy wszystkie tabele. Efekt przedstawia rysunek 3.

Rys. 3. 6. Teraz wstawiamy relacje. Zilustruję to na przykładzie relacji pomiędzy tabelą „Planety” a tabelą

„Ksiezyce”. a) klikamy w tabelę „Planety” (najlepiej w pole ID) i trzymając lewy przycisk myszy,

przesuwamy kursor do tabeli „Ksiezyce” (najlepiej na pole ID_Planety ) b) pojawi się okno (rys. 4), w którym moŜemy wybrać po jakich polach będziemy łączyli

tabele relacjami.

Strona 31 z 52

Rys. 4 c) dodatkowo zaznaczamy opcję „wymuszaj więzy integralności” , „kaskadowo aktualizuj

pola pokrewne” oraz „kaskadowo usuń rekordy pokrewne” i „klikamy” w przycisk „Utwórz”

d) w analogiczny sposób łączymy inne tabele relacjami (patrz rozdział 8.3.4 ) Mając juŜ wprowadzone relacje przystępujemy do tworzenia formularzy. W tym celu moŜna skorzystać z pomocy kreatorów lub utworzyć samodzielnie formularz. Tutaj pokaŜemy jak stworzyć samodzielnie formularz. W tym celu „klikamy” w oknie bazy danych w Formularze i wybieramy „Utwórz formularz w widoku projektu”. Pojawi się okno pokazane na rysunku 5 , które musimy wypełnić danymi.

Rys. 5.

Strona 32 z 52

7. We właściwościach formularza przechodzimy do zakładki „Format” i w polu „Tytuł” wpisujemy „Planety”

8. Przechodzimy do zakładki „Dane” wypełniając ją : • W polu „Źródło rekordów” wybieramy tabelę „Planety” – pojawi się okno z polami tabeli,

które zaznaczamy ( z Shiftem ) i przeciągamy na pole formularza ( sekcja Szczegóły ) (rys.6). Białe pola są polami tabeli , natomiast pola po lewej stronie to etykiety pól baz danych – ich nazwy moŜna dowolnie edytować ( prawy przycisk myszy na etykiecie – właściwości ) Uwaga : do formularza nie dodajemy pola ID.

Rys. 6 .

• Następnie ustawiamy kolor tła formularza, ustawiamy wielkość i kolor czcionki etykiet i pól, ustawiamy w odpowiednich miejscach formularza pola i etykiety. Efekt przedstawia rysunek poniŜej (rys. 7.)

Strona 33 z 52

Rys. 7.

9. Tworzymy teraz formularz do obsługi zdjęć planet (Zdjecia_Planet). W tym celu znowu wybieramy z bazy danych „Utwórz formularz z widoku projektu”. Pojawi się okno jak na rysunku 5. Uwaga : Jeśli nie pojawi nam się okno „Właściwości” to otwieramy je albo za pomocą paska narzędzi albo za pomocą prawego przycisku myszy. We własnościach formularza ustawiamy :

1. Zakładka Format • Tytuł – Zdjęcia Planet • Paski przewijania - Ŝaden • Selektory rekordów – nie • Styl obramowania – brak • Linie podziału - nie

2. Zakładka Dane Przy pozycji „Źródło rekordów” wybieramy tabelę „Zdjecia_Planet” i wprowadzamy pole „ZDJECIE” na formularz Uwaga : Jeśli takiego okna nie ma to w pasku narzędzi „klikamy” w ikonkę „Lista pól” (lub z menu Widok -> Lista pól ) – patrz rys. 8.

Strona 34 z 52

Rys. 8.

3. Usuwamy etykietę i ustawiamy własności obiektu „ZDJECIE” (na formularzu) • Tryb wymiarowania - Powiększ • Styl obramowania - przezroczysty

4. Zapisujemy zmodyfikowany formularz 10. Z okna „Baza danych” wybieramy formularz „Planety” i otwieramy w trybie projektu. 11. Z paska narzędzi wybieramy „Podformularz/Podraport” (pasek narzędzi : „Projekt formularza”) i

w obszarze roboczym rysujemy obszar podformularza. Po narysowaniu pojawi się okno, z którego wybieramy „UŜyj istniejącego ...” wybierając „Zdjecia” i „klikamy” w przycisk „Dalej”.

• W oknie „Kreator podformularzy”, w odpowiedzi na pytanie „Czy chcesz samodzielnie zdefiniować, które pola łączą główny formularz z podformularzami ....” zaznaczamy „Zdefiniuję samodzielnie”.

• Pojawi się tabela, w której w pierwszej kolumnie wstawiamy ID , a w drugiej ID_Planety ( patrz rysunek 9 ) i „klikamy” w przycisk „Dalej”

• Podajemy nazwę podformularza i „klikamy” w przycisk „Zakończ”.

Strona 35 z 52

Rys. 9.

12. Rysunek 10 przedstawia formularz w trybie projektu, a rysunek 11 widok formularza.

Rys. 10.

Strona 36 z 52

Rys. 11

13. W podobny sposób jak formularz „Planety” tworzymy formularz do obsługi danych dotyczących księŜyców (patrz punkt 9).

14. Następnie tworzymy formularz do obsługi zdjęć księŜyców (analogicznie jak w punkcie 9) 15. Teraz naleŜałoby połączyć nasze formularze w jeden. W tym celu w oknie Bazy danych tworzymy

formularz o nazwie np. „Main” i wypełniamy go według schematu podanego w podpunktach poniŜej :

a) prawym przyciskiem myszy otwieramy okno właściwości formularza i tam wypełniamy : � zakładka Format : Tytuł - wpisujemy „Main” � zakładka Format : Selektory rekordów - wpisujemy „nie” � zakładka Format : Linie podziału - wpisujemy „nie” � zakładka Dane : Źródło danych – wybieramy tablicę „Planety”

b) zamykamy okno „Właściwości formularza” i zapisujemy nowy formularz c) z paska „Przybornik” wybieramy „Formant karta” i rysujemy kartę na naszym formularzu

( patrz rysunek 12 ) d) klikamy w kartę prawym przyciskiem myszy i z menu wybieramy „Właściwości”.

Uwaga : Tytuł naszego okna właściwości powinien brzmieć : „Formant Karta : FormantKarta0”. Jeśli tak nie jest to za pomocą pola kombi wybieramy „FormantKarta0”

e) Wypełniamy własności „FormantKarta0” według następującego schematu : � zakładka Format : Lewy - wpisujemy 0 � zakładka Format : Górny - wpisujemy 0 � zakładka Format : Rozmiar czcionki - wpisujemy 12 � zakładka Format : Grubość czcionki - wpisujemy „Pogrubiona” � zamykamy okno „Właściwości” i zapisujemy formularz (efekt naszej przedstawia

rysunek 12)

Strona 37 z 52

Rys. 12.

f) następnie „klikamy” w napis „Strona 1” , prawym przyciskiem otwieramy okno „Właściwości” i w zakładce „Format” , w „Tytule” wpisujemy „Planety. Analogicznie postępujemy dla „Strony 2” wpisując nazwę „KsięŜyce”.

g) zapisujemy formularz, zamykamy go i przechodzimy do okna „Bazy danych” wybierając formularz „Planety” otwierając go za pomocą przycisku „Projektuj”

h) modyfikujemy ustawienia formularza „Planety” : � zakładka Format : Paski przewijania - Ŝaden � zakładka Format : Selektory rekordów - nie � zakładka Format : Przyciski nawigacyjne - nie � zakładka Format : Linie podziału - nie � zakładka Format : Pole menu sterowania - nie � zakładka Format : Przyciski Min Maks - Ŝaden � zakładka Format : Przycisk Zamknij - nie

i) zapisujemy i zamykamy formularz „Planety” , otwieramy w trybie formularz „KsięŜyce” i modyfikujemy go identycznie jak formularz „Planety”, jednak z tą róŜnicą, Ŝe : � zakładka Format : Przyciski nawigacyjne - tak � zakładka Format : Pole menu sterowania - tak

j) zapisujemy i zamykamy formularz „KsięŜyce” i z powrotem otwieramy w trybie projektowania formularz „Main” , zakładkę „Planety”

k) wstawiamy klikamy w ikonkę „Podformularz / Podraport” (pasek „Przybornik”) i rysujemy w zakładce planety obszar podformularza (na całą zakładkę). Następnie z okna „Kreator podformularzy” wybieramy formularz „Planety” oraz w następnym oknie definiujemy samodzielnie pola łączące formularz z podformularzem wybierając w polu formularza i podformularza pole „ID” (pole klucza głównego tabeli „Planety).

l) przechodzimy do zakładki „KsięŜyce” i niej analogicznie jak w podpunkcie „k” wstawiamy formularz „Ksiezyce” wybierając pola łączące : formularza – pole „ID”, podformularza – pole „ID_PLANETY”.

Strona 38 z 52

m) zapisujemy zmiany i zamykamy nasz formularz. Rysunek 13 i 14 przedstawia gotowy formularz.

Rys. 13.

Rys. 14.

Strona 39 z 52

n) proszę zwrócić uwagę, Ŝe planety nie są posortowane np. alfabetycznie. Posortujmy wobec tego planety w naszym formularzu po nazwach planet (zwróć uwagę, Ŝe w tabeli „Planety”, we właściwościach pola „NAZWA” ustawiliśmy właściwość „Indeksowanie” na „Tak-bez duplikatów”. Jeśli tego nie zrobiliśmy naleŜy to teraz zrobić. ).

o) aby uszeregować planety alfabetycznie otwieramy formularz „Main” w trybie projektowania, otwieramy jego właściwości, wybieramy zakładkę „Dane” , „klikamy w pole „Źródło rekordów” , a następnie klikamy w ikonkę z trzema kropkami (rys. 15) – otwieramy konstruktora kwerend.

Rys. 15.

p) pojawi się okno (rys. 16), w którym w kolumnie 1 wybieramy : w polu Tabela : Planety, w

polu Pole : * ; kolumnie 2 wybieramy : w polu Tabela : Planety, w polu Pole : NAZWA , w polu Sortuj : Rosnąco. Tabela „Planety” zostanie posortowana według nazw planet. Zamykamy okno zapisując zmiany.

Rys. 16.

Strona 40 z 52

UWAGA : W oknie „Właściwości” w zakładce „Format” sprawdźmy tytuł – powinien być „Main”. Pojawienie się w widoku formularza zapytania o podanie „ID” oznacza, Ŝe sortowanie wstawiliśmy nie do tego formularza (prawdopodobnie do formularza „Planety”). NaleŜy wtedy wykasować wszystko z pola „Źródło rekordów” i wstawić nazwę tabeli (tu tabela „Planety”).

q) zwróćmy uwagę, Ŝe przechodząc do zakładki „KsięŜyce” tak naprawdę nie wiemy jakiej planety jest wybrany księŜyc. Spróbujmy temu zaradzić. Jednym ze sposobów jest wstawienie nagłówka formularza.

r) otwieramy formularz „Main” w trybie projektowania, „klikamy” prawym przyciskiem w pasek tytułowy formularza – otworzy się nam okno, z którego wybieramy „Nagłówek / stopka formularza”. Z oknie naszego formularza pojawią się dodatkowe okna : na górze formularza – nagłówek, na dole – stopka.

s) przechodzimy do stopki formularza , „klikamy” w nią prawym przyciskiem myszy, z menu wybieramy „Właściwości” i w zakładce „Wszystkie” w polu „Wysokość” ustawiamy wartość 0 (zero) , a w polu „Widoczny” ustawiamy „nie” – stopka nie będzie wyświetlana.

t) przechodzimy do nagłówka formularza, „klikamy” w niego prawym przyciskiem myszy, z menu wybieramy „Właściwości” i w zakładce „Wszystkie” w polu „Wysokość” ustawiamy wartość 1,22 cm.

u) następnie klikamy w ikonę „Lista pól” i z okna przeciągamy na nagłówek formularza pole „planety.nazwa”. Następnie pole to formatujemy ustawiając czcionkę, jej wielkość oraz kolor (patrz rys. 17).

Rys. 17.

16. Teoretycznie bazę danych mamy juŜ zrobioną, ale pozbawiona jest ona moŜliwości wydruków na przykład informacji o planetach i ich księŜycach. W tym celu zrobimy raport, w którym zdefiniujemy widok wydruku.

17. W tym celu w oknie „Baza danych” wybieramy „Raporty” i klikamy w „Utwórz raport w widoku projektu”. Pojawi się okno jak na rysunku 18.

Strona 41 z 52

Rys. 18.

a) „klikamy” prawym przyciskiem myszy w pasek tytułowy raportu, otwieramy okno „Właściwości” i wpisujemy odpowiednio :

- zakładka „Format”, pole „Tytuł” : „Planety z księŜycami” - zakładka „Format”, pole „Szerokość” : 18,5 cm - zakładka „Dane”, pole „Źródło rekordów” – „klikamy” w ikonkę z trzema

kropkami (Konstruktor kwerend). Pojawi się wtedy okno, które wypełniamy według poniŜszego schematu : o „klikamy” w nie prawym przyciskiem myszy i z menu wybieramy polecenie

„PokaŜ tabele”. o z okna tabel wybieramy przez naciśnięcie przycisku „Dodaj” tabele

„PLANETY” i „KSIEZYCE”. Zamykamy okno tabel (przycisk „Zamknij”). o wypełniamy kolumny : o kolumna 1 , pole „Pole” – „ID_PLANETY” , pole „Tabela” – „KSIEZYCE” ,

pole „Kryteria” – „=PLANETY.ID” o kolumna 2 , pole „Pole” – „PLANETY.* ” , pole „Tabela” – „PLANETY” o kolumna 3 , pole „Pole” – „KSIEZYCE.* ” , pole „Tabela” – „KSIEZYCE” o kolumna 4 , pole „Pole” – „PLANETY.NAZWA” , pole „Tabela” –

„PLANETY” , pole „Sortuj” – „Rosnąco” o kolumna 5 , pole „Pole” – „KSIEZYCE.NAZWA” , pole „Tabela” –

„KSIEZYCE” , pole „Sortuj” – „Rosnąco” o zamykamy okno konstruktora kwerend zapisując zmiany. Widok wypełnionego

okna przedstawia rysunek 19.

Strona 42 z 52

Rys. 19,

- zamykamy okno „Właściwości” zapisując raport.

b) „klikamy” w ikonę „Lista pól” i z otworzonego okna przeciągamy do sekcji szczegóły raportu pola, dotyczące księŜyców (związane z tabelą KSIEZYCE). Pola te moŜemy sformatować ustawiając rozmiar czcionki, kolor, tło.

c) „klikamy” w ikonę „Sortowanie i grupowanie” (pasek narzędzi „Projekt raportu”) - pojawi się okno, które wypełniamy według schematu pokazanego na rysunku 20. Uwaga : waŜne jest, aby ustawić pole „Nagłówek grupy” na „Tak” – w raporcie pojawi się nowa sekcja „PLANETY.NAZWA – Nagłówek”.

Rys. 20.

d) zamykamy okno „Sortowanie i grupowanie”. e) do sekcji „PLANETY.NAZWA – Nagłówek” przeciągamy z listy pól wszystkie potrzebne

nam pola dotyczące planet (związane z tabelą PLANETY). Pola te odpowiednio formatujemy.

Strona 43 z 52

f) przechodzimy do nagłówka strony i we „Właściwościach”, zakładka „Format” ustawiamy „wysokość” na 0 oraz „Widoczny” na „nie”. Analogicznie postępujemy dla stopki strony.

g) następnie zapisujemy raport ( tu pod nazwą : „Planety z księŜycami” ) i zamykamy go. h) prawdopodobnie nasz raport posiada błąd ( zielony kolor w lewym górnym rogu – rys. 21).

Rys. 21

Jest to spowodowane błędnymi ustawieniami marginesów naszego raportu. W celu poprawienia błędnych marginesów otwieramy nasz raport w trybie projektowania, z menu głównego wybieramy Plik -> Ustawienia strony i ustawiamy marginesy prawy i lewy na 0,9 cm , a dolny i górny na 1,5 cm. Zamykamy nasz raport zapisując zmiany.

18. w oknie „Baza danych” przechodzimy do formularzy i wybieramy w trybie projektowania

formularz „Main”. Z paska narzędzi „Projekt formularza” wybieramy „Przycisk polecenia” i rysujemy go w nagłówku formularza (trzymając naciśnięty prawy przycisk myszy). Po narysowaniu automatycznie otworzy się okno „Kreatora przycisków poleceń”, z którego wybieramy :

o w okienku „Kategorie” : „Operacje na raportach” o w okienku „Akcje” : „Drukuj raport” o naciskamy klawisz „Dalej” i z nowego okna wybieramy raport „Planety z księŜycami” o naciskamy klawisz „Dalej” i w następnym oknie zaznaczamy „Obraz” oraz „Drukarka” i

„klikamy” w klawisz „Zakończ”. o dodatkowo „klikając” prawym klawiszem myszy w utworzony przed chwilą przycisk

drukowania raportu i wybierając „Właściwości”, w zakładce „Inne” , pole „Tekst etykietki formantu” moŜemy wpisać informację, która będzie się wyświetlała w „dymku” po najechaniu klawiszem kursora na przycisk.

19. Stwórzmy teraz moŜliwość przeszukiwania bazy danych. W tym celu stworzymy dodatkowy formularz, w którym wstawimy warunki przeszukiwania. Niestety, będziemy musieli w tym wypadku wykorzystać VBA.

a) przechodzimy do okna „Bazy danych” , wybieramy „Formularze” oraz „Utwórz formularz w widoku projektu”

b) od razu prawym przyciskiem myszy uruchamiamy okno „Właściwości” formularza i ustawiamy : o zakładka „Format” , pole „Tytuł” : „Formularz Wyszukiwanie” o zakładka „Format” , pole „Selektory rekordów” : „Nie” o zakładka „Format” , pole „Przyciski nawigacyjne” : „Nie” o zakładka „Format” , pole „Linie podziału” : „Nie” o zakładka „Inne” , pole „Modalny” : „Tak”

c) zapisujemy formularz pod nazwą „Formularz Wyszukiwanie” d) z paska narzędzi „Przybornik” wstawiamy „Pole listy”. Etykietę „Pola listy” ustawiamy

nad polem odpowiednio ją formatując. Wstawiając „Pole listy” pojawi się okno kreatora listy pól : wybieramy „Chcę wpisać Ŝądane przeze mnie wartości” , „klikamy” w przycisk „Dalej” i w tabelce wpisujemy kolejno w kaŜdym wierszu : „Masa” , „Średnia odległość”,

Strona 44 z 52

„Promień równikowy”, „Promień biegunowy”, „Okres obiegu wokół Słońca”, „Przyspieszenie grawitacyjne” itp. – krótko mówiąc kryteria, po których będziemy przeszukiwać bazę danych. Następnie „klikamy” w przycisk „Dalej” i wpisujemy nazwę etykiety : „Lista cech planet” i klikamy w „Zakończ”

e) prawym przyciskiem myszy klikamy w narysowane na formularzu „Pole listy” i wybieramy „Właściwości” ustawiając pola według następującego schematu : o zakładka „Format” , pole „Liczba kolumn” : 1 o zakładka „Format” , pole „Szerokość kolumn” : 2,5 cm o zakładka „Format” , pole „Rozmiar czcionki” : 10 o zakładka „Dane” , pole „Źródło formantu” : pozostawiamy puste (koniecznie) o zakładka „Dane” , pole „Typ źródła wierszy” : wybieramy „Lista wartości” o zakładka „Dane” , pole „Źródło wierszy” : wpisujemy (dokładnie jak w tym wierszu,

zachowując średniki i cudzysłowy) : "Masa";"Średnia odległość";"Promień równikowy";"Promień biegunowy";"Okres obiegu wokół Słońca";"Przyspieszenie grawitacyjne" . Pola te pojawią się w liście pól.

o zakładka „Inne” , pole „Nazwa” : Lista_cech_planet (uwaga : nie stosujmy tu spacji ani polskich znaków – tak na wszelki wypadek ☺ )

Uwaga : część wymienionych wyŜej pól została juŜ wypełniona w trakcie działania „Kreatora pól”, nie mniej podaję tu ich sposób wypełnienia odpowiednimi wartościami

f) w identyczny sposób wstawiamy następną listę pól nadając mu nazwę (zakładka „Inne” , pole „Nazwa”) „Lista_operatow” , a kolumny (zakładka „Dane” , pole „Źródło wierszy” ) wypełniając znakami : = ; > ; < ; <> .

g) teraz „klikamy” w ikonę „Pole tekstowe” (pasek narzędzi „Przybornik”) i wstawiamy je do naszego formularza. We „Właściwościach” ustawiamy rozmiar czcionki, tło itp. oraz w zakładce „Inne”, pole „Nazwa” wpisujemy „Wartosc” ( bez polskich liter ! ).

h) teraz z paska narzędzi „Przybornik” wybieramy „Przycisk polecenia” i wstawiamy go do formularza. Jednocześnie otworzy nam się okno „Kreatora przycisków poleceń” , z którego wybieramy kolejno : „Operacje na formularzach” , „Edytuj filtr formularza” i klikamy w klawisz „Zakończ”. Tak naprawdę nie ma znaczenia co wybierzemy, poniewaŜ i tak zmienimy sobie działanie tego przycisku w jego „Właściwościach”. A więc do dzieła – modyfikujemy właściwości wstawionego przycisku : o zakładka „Format” , pole „Tytuł” : SZUKAJ o zakładka „Format” , pole „Obraz” : „klikając” w ikonkę z trzema kropkami moŜemy

wybrać odpowiadającą nam ikonę, która będzie umieszczona na przycisku o zakładka „Inne” , pole „Nazwa” : Wyszukaj_rekordy (bez polskich liter i spacji) o zakładka „Inne” , pole „Tekst etykietki formantu” : Szukaj

i) zapisujemy nasz formularz. Efekt naszej pracy w trybie projektowania przedstawia rysunek 22 , a w „Widoku formularza” rysunek 23.

Strona 45 z 52

Rys. 22.

Rys. 23

j) oczywiście to nie koniec naszej pracy. Teraz przychodzi kolej na VBA. Otwieramy ponownie „Formularz Wyszukiwanie” w trybie projektowania i „klikamy” prawym przyciskiem myszy w przycisk „Szukaj” (ten z lornetką) i otwieramy okno „Właściwości”.

k) przechodzimy do zakładki „Zdarzenie” i „klikamy” w pole „Przy kliknięciu” – pole to powinno wypełnić się treścią „ [Procedura zdarzenia] ”. „Klikamy” w ikonę z trzema kropkami i przechodzimy do edytora VBA. Automatycznie został wygenerowany kod obsługi tego zdarzenia, ale on nas nie interesuje – wykasowujemy go wstawiając następujący kod :

Option Compare Database Option Explicit Private Sub Wyszukaj_rekordy_Click() Dim str As String str = "" Select Case Lista_Cech_Planet.Value

Case "Masa" str = "[Masa] " & Me.Lista_operatow.Value & Me.Wartosc.Value

Strona 46 z 52

Case "Średnia odległość" str = "[Srednia_odleglosc] " & Me.Lista_operatow.Value & Me.Wartosc.Value Case "Promień równikowy" str = "[Promien_rownikowy] " & Me.Lista_operatow.Value & Wartosc.Value Case "Promień biegunowy" str = "[Promien_biegunowy] " & Me.Lista_operatow.Value & Me.Wartosc.Value Case "Okres obiegu wokół Słońca" str = "[Obrot_wokol_Slonca] " & Me.Lista_operatow.Value & Me.Wartosc.Value Case "Przyspieszenie grawitacyjne" str = "[Przyspieszenie_graw] " & Me.Lista_operatow.Value & Me.Wartosc.Value

Case Else MsgBox "coś nie tak, koniecznie sprawdz" str = ""

End Select If str <> "" Then

str = str & " " str = "SELECT * FROM PLANETY WHERE " & str Forms![Main].RecordSource = str

End If DoCmd.Close Exit_Wyszukaj_rekordy_Click:

Exit Sub End Sub

Uwaga : analiza kodu znajduje się w rozdziale 10

l) zapisujemy nasz kod, zamykamy okno edytora VBA, zamykamy nasz formularz zapisując

go i wybieramy formularz „Main” przechodząc do jego edycji. m) w nagłówku formularza „Main” wstawiamy z paska narzędzi „Przybornik” „Przycisk

polecenie” – otworzy się okno „Kreatora przycisków poleceń” , z którego wybieramy kolejno : „Operacje na formularzach” , oraz akcję : „Otwórz formularz”. „Klikamy” w przycisk „Dalej” i w następnym oknie wybieramy „Formularz Wyszukiwanie”. Kończymy pracę kreatora.

n) prawym przyciskiem myszy otwieramy „Właściwości” naszego przycisku, przechodzimy do zakładki „Inne” i w polu „Nazwa” wpisujemy „Otworz_Szukanie” (bez polskich liter). Następnie przechodzimy do zakładki „Zdarzenie” i „klikamy” w ikonę z trzema kropkami obok pola „Przy kliknięciu” – otworzy się nam edytor VBA. Wyrzucamy cały kod dotyczący tylko tego polecenia i wstawiamy poniŜszy : Private Sub Otworz_Szukanie_Click()

DoCmd.OpenForm "Formularz Wyszukiwanie" Exit_Otworz_Szukanie_Click: Exit Sub

End Sub

Strona 47 z 52

Uwaga : W edytorze VBA powinien znajdować się jeszcze kod dotyczący wydruku wcześniej stworzonego raportu ( Procedura : Private Sub Druk_zbiorczy_planet_Click() ). Tego kodu po Ŝadnym pozorem nie wykasowujemy !

o) zapisujemy kod i zamykamy edytor VBA, zapisujemy formularz „Main”. Oczywiście w kaŜdej chwili moŜemy zmienić właściwości tego przycisku.

p) zwróćmy uwagę, Ŝe jeŜeli wprowadzimy filtry na naszą tabelę planety to pozostają one cały czas – aŜ do zamknięcia bazy danych. Wobec tego musimy mieć moŜliwość wyłączenia ich w kaŜdej chwili. PosłuŜymy się znowu przyciskiem poleceń.

q) w tym celu w nagłówku formularza „Main” wstawiamy przycisk poleceń – otworzy się okno „Kreatora przycisków poleceń” - wciskamy przycisk „Anuluj”. Przechodzimy do „Właściwości” przycisku ustawiając odpowiednie pola według schematu : o zakładka „Format” , pole „Tytuł” : Kasuj o zakładka „Format” , pole „Obraz” : „klikając” w ikonkę z trzema kropkami moŜemy

wybrać odpowiadającą nam ikonę, która będzie umieszczona na przycisku o zakładka „Inne” , pole „Nazwa” : Koniec_filtrowania (bez polskich liter i spacji) o zakładka „Inne” , pole „Tekst etykietki formantu” : Koniec filtrowania o zakładka „Zdarzenie” , „klikamy” w pole „Przy kliknięciu” – pole to powinno

wypełnić się treścią „ [Procedura zdarzenia] ”. „Klikamy” w ikonę z trzema kropkami i przechodzimy do edytora VBA. Automatycznie został wygenerowany kod obsługi tego zdarzenia, ale on nas nie interesuje – wykasowujemy go wstawiając następujący kod : Private Sub Koniec_filtrowania_Click() Dim str As String str = "SELECT * FROM PLANETY" Forms![Main].RecordSource = str Exit_Koniec_filtrowania_Click: Exit Sub End Sub

o zamykamy edytor VBA i zapisując zmiany, zapisujemy zmiany w formularzu „Main” i zamykamy go.

20. Praktycznie mamy juŜ gotową aplikację. Niestety nie będzie ona mogła samodzielnie działać – na

komputerze musi być zainstalowany Access lub Access Developer (okrojona wersja pozwalająca na oglądanie bazy). Ale spróbujemy sobie zmodyfikować wygląd naszej bazy danych. W tej chwili wygląda ona tak jak na rysunku 24 (uruchomiona).

Strona 48 z 52

Rys. 24 21. Uwaga : zanim zaczniesz wykonywać polecenia z poniŜszych punktów zrób kopię zapasową

bazy danych. Później moŜe być z późno !! ☺ 22. Z menu głównego wybieramy „Narzędzia” -> „Narzędzia bazy danych” -> „Konwertuj bazę

danych” -> „Na format pliku programu Access 2002 – 2003” a następnie podajemy nazwę nowej bazy danych. Wychodzimy z programu Access i ponownie uruchamiamy przekonwertowaną do formatu 2003 bazę danych.

23. Ponownie z menu głównego wybieramy „Narzędzia” -> „Narzędzia bazy danych” -> „Utwórz plik MDE”, a następnie podajemy nazwę pliku. Jeśli baza danych zawiera kod języka Microsoft Visual Basic for Applications (VBA) zapisanie bazy danych programu Microsoft Access jako pliku MDE spowoduje kompilację wszystkich modułów, usunięcie całego edytowalnego kodu źródłowego i skompaktowanie docelowej bazy danych. Kod języka Visual Basic będzie nadal wykonywany, ale jego wyświetlenie i edytowanie będzie niemoŜliwe. Kod języka Visual Basic będzie wciąŜ działał tak jak poprzednio - będzie moŜliwe aktualizowanie danych i uruchamianie raportów. Zapisanie bazy danych w formacie MDE nie zapobiegnie modyfikowaniu projektu bazy danych. Zostaną jednak wprowadzone następujące zmiany: o Interfejs uŜytkownika umoŜliwiający modyfikowanie lub tworzenie formularzy, raportów

lub modułów zostanie wyłączony. o Dodawanie, usuwanie lub zmienianie odwołań do bibliotek obiektów lub do baz danych w

oknie dialogowym „Odwołania VBA” będzie niemoŜliwe.

Strona 49 z 52

o Kod źródłowy będzie niedostępny. o Polecenia importowania i eksportowania formularzy, raportów lub modułów zostaną

wyłączone. Jednak tabele, kwerendy, strony dostępu do danych i makra moŜna będzie importować z baz danych innych niŜ MDE lub eksportować do nich.

Więcej informacji na temat pliku typu MDA moŜna znaleźć między innymi na stronie internetowej firmy Microsoft (http://office.microsoft.com/pl-pl/assistance/HP052393021045.aspx)

24. Zamykamy istniejącą bazę danych i otwieramy bazę MDE. Z menu głównego wybieramy polecenie „Uruchomienie” (menu „Narzędzia). Pojawi się okno (rys. 25) , które wypełniamy według schematu :

Rys. 25.

o pole „Tytuł aplikacji” – wpisujemy np. Układ Słoneczny o pole „Ikona aplikacji” – naciskając przycisk „Przeglądaj” moŜemy wybrać ikonę naszej

aplikacji o wyłączamy opcje : „Zezwalaj na pełne menu” , „Zezwalaj na domyślne menu skrótów”,

„UŜyj specjalnych klawiszy programu Access”, „Zezwalaj na wbudowane paski narzędzi”, „Zezwalaj na zmiany pasków narzędzi/menu” , „Wyświetl okno bazy danych” oraz „Wyświetl pasek stanu”

o w polu „Wyświetl formularz/stronę” wybieramy formularz „Main” o zamykamy okno przez „OK” , zamykamy bazę danych i uruchamiamy ją ponownie (rys.26)

Strona 50 z 52

Rys. 26.

o proszę zwrócić uwagę, Ŝe nasza baza danych jest niedostępna w trybie projektowania, nie moŜemy podejrzeć formularzy, tabel itp.

o w jaki sposób moŜna przywrócić wyświetlanie wszystkich pasków narzędzi (jak przed punktem 24) ? Hmmm. Tajemnica. ☺

25. W ten sposób nasza baza danych jest względnie zabezpieczona przed ingerencją innych , mniej

zaawansowanych uŜytkowników. 26. I na tym zakończymy budowę przykładowej bazy. Mam nadzieję, Ŝe powyŜszy materiał nie tylko

pomoŜe wszystkim zainteresowanym zaliczyć materiał z Accessa i relacyjnych baz danych, ale takŜe zachęci do własnych eksperymentów.

Strona 51 z 52

10. Analiza kodu VBA z rozdziału 9.

Linia kodu Wyjaśnienie Option Compare Database Option Explicit Opcja ta wymaga od nas definiowania zmiennych Private Sub Wyszukaj_rekordy_Click() Deklaracja i początek procedury

Wyszukaj_rekordy (private – procedura lokalna) Dim str As String Deklaracja zmiennej „str” typu string

(łańcuchowego) str = "" „wyzerowanie” zmiennej str Select Case Lista_Cech_Planet.Value Początek instrukcji wyboru. Wartość

sprawdzanego wyraŜenia (Lista_Cech_Planet.Value) pobierana jest z listy pól „Lista cech planet”

Case "Masa" Początek bloku dla wartości „Masa” z listy cech str = "[Masa] " & Me.Lista_operatow.Value & Me.Wartosc.Value

Podstawienie pod zmienną str wyraŜenia. PoniewaŜ będzie to instrukcja SQL wobec tego nazwy pól tabeli bierzemy w nawiasy kwadratowe. Znak & oznacza, Ŝe łączymy ze sobą ciągi znaków (odpowiednik znaku +). WyraŜenie Me.Lista_operatow.Value oznacza, Ŝe pobieramy z wartość z listy pól „Lista operatorów”. WyraŜenie „Me.” oznacza, Ŝe występująca po nim nazwa obiektu odnosi się do bieŜącego formularza. W tym wypadku nasza procedura będzie działała prawidłowo bez tego wyraŜenia.

Case "Średnia odległość" Początek bloku dla wartości „Średnia odległość” z listy cech

str = "[Srednia_odleglosc] " & Me.Lista_operatow.Value & Me.Wartosc.Value

j.w.

....................... Case Else Wykonuje ten blok jeśli wybraliśmy wyraŜenie, dla

którego nie ma warunku MsgBox "coś nie tak, koniecznie sprawdz" Wyświetlenie komunikatu str = "" „wyzerowanie” zmiennej str End Select Koniec instrukcji wyboru If str <> "" Then Początek instrukcji warunkowej – instrukcja będzie

wykonana jeŜeli zmienna str nie jest pusta str = str & " " Dodanie do zmiennej str spacji str = "SELECT * FROM PLANETY WHERE " & str

Stworzenie instrukcji SQL I podstawienie ją pod zmienną str

Forms![Main].RecordSource = str Wstawienie i wykonanie instrukcji SQL dla formularza „Main” – w nim są wyświetlane rekordy tabeli

End If Koniec instrukcji warunkowej

Strona 52 z 52

Linia kodu Wyjaśnienie DoCmd.Close Zamknięcie okna formularza Exit_Wyszukaj_rekordy_Click: Exit Sub

Zdefiniowanie sposobu zakończenia procedury – wyjście

End Sub Koniec procedury