background image

     

 

CENTRUM EDUKACYJNE

EDUSOFT

ul. Ogrodowa 46/48
00-876 Warszawa
tel. (0-22) 654 55 22
fax (0-22) 654 55 23

e-mail: centrum@edusoft.pl
http://www.edusoft.pl

 

 

M

S

  

A

cc

es

 9

7

 P

L

  

  

za

w

a

n

so

w

a

n

te

ch

n

ik

p

ro

g

ra

m

o

w

a

n

ia

 b

a

d

a

n

y

ch

 

background image

     

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

SPIS TREŚCI 

WPROWADZENIE ...............................................................................................................................................1 

OMÓWIENIE BAZY DANYCH..........................................................................................................................2 

ZDARZENIA - ICH ROLA W TWORZENIU APLIKACJI ............................................................................5 

U

STAWIANIE SPOSOBU URUCHAMIANIA BAZY DANYCH

.....................................................................................11 

L

ISTA WYBRANYCH AKCJI

..................................................................................................................................12 

OBIEKTY MICROSOFT ACCESS - ICH WŁAŚCIWOŚCI I METODY....................................................16 

W

YBRANE METODY I WŁAŚCIWOŚCI NIEKTÓRYCH OBIEKTÓW

. ..........................................................................18 

WSTĘP DO JĘZYKA VISUAL BASIC ............................................................................................................21 

PODSTAWOWE INSTRUKCJE I FUNKCJE JĘZYKA VISUAL BASIC...................................................24 

I

NSTRUKCJE

.......................................................................................................................................................24 

F

UNKCJE

............................................................................................................................................................26 

P

ROGRAMOWANIE ZA POMOCĄ OBIEKTÓW DOSTĘPU DO DANYCH 

(D

AO

)...........................................................44 

P

RZETWARZANIE TRANSAKCYJNE

......................................................................................................................61 

ZAGADNIENIA DODATKOWE.......................................................................................................................63 

W

YKORZYSTANIE JĘZYKA 

SQL- 

PRZYKŁAD

......................................................................................................65 

F

ILTROWANIE PRZEZ FORMULARZ

......................................................................................................................70 

P

ODŁĄCZANIE DANYCH Z ZEWNĘTRZNYCH ŹRÓDEŁ

...........................................................................................72 

O

BSŁUGA BŁĘDÓW WYKONANIA

........................................................................................................................73 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

ii 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Wprowadzenie  

Tematem  tego  szkolenia  jest  wprowadzenie  do  tworzenia  aplikacji  obsługujących  bazy 
danych z wykorzystaniem języka programowania Visual Basic.  

W  ciągu  pięciu  dni  szkolenia  uczestnicy  mają  za  zadanie  zbudować  z  przygotowanych 
obiektów  (tabel,  formularzy  i  raportów),  pod  kierunkiem  prowadzącego  zajęcia,  działającą 
aplikację.  Aplikacją  tą  jest  Program  obsługi  wypoŜyczalni  płyt.  Program  ma  umoŜliwiać 
prowadzenie  ewidencji  płyt,  listy  klientów,  rejestrowanie  wypoŜyczeń  i  zwrotów  oraz 
rozliczanie  klientów  i  księgowanie  wpłat.  Oprócz  tego,  na  oddzielnych  przykładach  zostaną  
zademonstrowane  zagadnienia  programowania,  które  nie  zostały  ujęte  w  przykładowej 
aplikacji. 

Program szkolenia trwa 5 dni i wygląda następująco: 

1.  Pierwszy dzień obejmuje przedstawienie elementów składowych i zapoznanie z projektem 

aplikacji w podstawowej wersji, przedstawienie koncepcji zdarzeń i omówienie sposobów 
sterowania  działaniem  aplikacji  za  pomocą  obsługi  tych  zdarzeń  (procedury  zdarzeń). 
Przedstawione  zostaną  typowe  zdarzenia  występujące  w  aplikacjach.  Zadaniem 
uczestników będzie wykonanie pod kierunkiem prowadzącego ćwiczeń znajdujących się w 
materiałach szkoleniowych. 

2.  Następne  dwa  dni  poświęcone  są  podstawom  programowania  za  pomocą  obiektów 

programu  Microsoft  Access.  Przedstawione  zostaną  podstawowe  instrukcje  i  elementy 
języka  Visual  Basic,  zasady  programowania  oraz  obiekty  Microsoft  Access  -  ich 
właściwości  i  metody.  Poznawanie  tych  obiektów  będzie  przebiegało  równolegle  z 
rozbudową aplikacji zgodnie z przygotowanymi ćwiczeniami. 

3.  Ostatnie dwa dni przeznaczone są na przedstawienie najwaŜniejszych obiektów dostępu do 

danych  (Data  Access  Objects)  wraz  z  ich  strukturą,  ich  właściwościami,  metodami  i 
sposobami  korzystania  z  nich.  Omówione  zostanie  takŜe  wykorzystanie  języka  SQL, 
zarządzanie  dostępem  do  obiektów  z  poziomu  języka,  metody  śledzenia  i  wykonywania 
programów. Po wykonaniu ćwiczeń z tego zakresu powstanie w pełni działająca aplikacja. 

UWAGA:  Kurs  jest  podzielony  na  etapy.  Na  początku  kaŜdego  etapu  uczestnicy  muszą 
skopiować  na  dysk  lokalny  z  dysku  sieciowego,  z  katalogu  podanego  przez  prowadzącego, 
wersję  bazy  danych  z  poprzedniego  dnia  uzupełnioną  o  elementy  potrzebne  na  ćwiczenia  w 
danym dniu (z załoŜenia uczestnicy nie tworzą formularzy, raportów, zapytań i tabel gdyŜ nie 
jest to celem szkolenia). 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

2 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Omówienie bazy danych 

Proces tworzenia aplikacji zaczniemy od utworzenia podstawowej wersji bazy danych, której 
zadaniem  będzie  na  początku  przechowywanie  informacji  tylko  o  kategoriach  muzycznych, 
wykonawcach,  płytach  i  nagraniach  na  poszczególnych  płytach.  W  skład  bazy  wchodzą 
następujące elementy: 

1.  Cztery tabele dotyczące informacji o płytach: 

• 

KATEGORIE_MUZYCZNE 

• 

WYKONAWCY 

• 

PLYTY 

• 

NAGRANIA 

• 

Dodatkowa  tabela  nie  związana  merytorycznie  z  muzyką  -  tabela  MENU.  W  tej  tabeli 
znajdują  się  oznaczone  liczbami  nazwy  poleceń.  Tabela  ta  zostanie  wykorzystana  do 
sterowania aplikacją. Polecenia podzielone zostały na trzy grupy:  

KATALOG (są to polecenia oznaczone numerami od 100 do 199), 

WYDRUKI (200-299)  

KLIENCI (300 -399).  

Relacje (związki) między tabelami przedstawione zostały na poniŜszym rysunku. 

 

Rys. 1 Relacje między tabelami 

2.  Cztery kwerendy.  

• 

Trzy  z  nich  (KATALOG,  WYDRUKI,  KLIENCI)  wybierają  z  tabeli  MENU  polecenia  z 
odpowiedniej grupy,  

• 

Czwarta – LISTA_PLYT - wyświetla listę płyt zarejestrowanych w bazie. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

3. Pięć formularzy: 

• 

LOGO - formularz będzie automatycznie wyświetlany po otwarciu bazy danych. Znajdują 
się  na  nim  dwie  etykiety  z  informacjami  o  aplikacji.  Po  upływie  zadanego  czasu  
(np. 5 sekund), lub po kliknięciu myszką w dowolnym miejscu formularza, formularz ten 
będzie  zamykany,  a  po  jego  zamknięciu  automatycznie  będzie  otwierany  formularz 
PANEL STEROWANIA 

• 

PANEL  -  centralny  formularz  całej  aplikacji.  Jego  zadaniem  będzie  udostępnienie 
uŜytkownikowi, za pośrednictwem poleceń i przycisków, wszystkich akcji niezbędnych do 
poprawnej pracy aplikacji.  

Poszczególne elementy sterujące zostały zaznaczone na rysunku i zostaną poniŜej omówione. 

 

Rys. 2 Okno dialogowe - Panel sterowania aplikacją 

Etykieta informuje, która grupa poleceń wyświetlana jest w polu listy poniŜej. 

Grupa opcji, składająca się z czterech przycisków (wartości przekazywane przez tę 
grupę to odpowiednio 1, 2, 3 i 4 dla kolejnych przycisków od góry). Zadaniem trzech 
pierwszych przycisków jest wyświetlenie w polu listy poleceń (z odpowiedniej 
kwerendy) oraz zmianę tytułu etykiety.. 

Przycisk polecenia otwiera formularz obsługi wypoŜyczalni. (Formularz pojawi się w 
jednym z kolejnych etapów szkolenia) 

Pole listy, w którym po kliknięciu odpowiedniego przycisku z grupy opcji pojawi się 
lista poleceń z odpowiedniego zapytania. Dwukrotne kliknięcie polecenia 
wyświetlonego w tym polu ma spowodować wykonanie odpowiedniej akcji. 

Etykieta - dwukrotne kliknięcie tej etykiety powoduje wyświetlanie komunikatu z 
informacją o autorze. 

Przycisk polecenia - przycisk kończący pracę z aplikacją i programem Access.  

• 

PLYTY - Formularz zespolony przeznaczony do wyświetlania i edycji informacji o 
płytach. (W formularzu PLYTY umieszczony jest podformularz PLYTY_PF, w którym 
wyświetlane są tytuły nagrań).  

 

Etykieta

 

Grupa opcji

 

Przycisk 
polecenia 

Pole listy 

Etykieta

 

Przycisk 
polecenia

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

4 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

 

 

 

 

 

 

Rys. 3 Okno dialogowe formularza PŁYTY 

Elementy sterujące na formularzu PLYTY  

1)  Związane pole tekstowe wyświetlające numer płyty (przy dodawaniu nowego 

rekordu, Access powinien automatycznie proponować kolejny numer - proszę 
pamiętać, Ŝe nie jest to pole typu licznik) 

2)  Pole kombi - pole związane z polem Numer_wykonawcy w tabeli PLYTY. W 

programie umoŜliwimy dopisywania do listy nowych wykonawców. Źródłem 
wiersza dla tego pola jest tabela WYKONAWCY. 

3)  Pole kombi - pole związane z polem Numer_kategorii w tabeli PLYTY. Źródłem 

wiersza dla tego pola jest tabela KATEGORIE. 

4)  Pole tekstowe związane z polem Tytul tabeli PLYTY.  

5) 6) 7) - Niezwiązane pola tekstowe, w których wyświetlane są informacje zgodnie z 

opisem na etykietach. 

8) Grupa przycisków poleceń słuŜących do przechodzenia po rekordach. 

9) Przycisk polecenia usuwający płytę z katalogu 

10) Przycisk polecenia dodający nową płytę do katalogu. 

11) 12) Przyciski poleceń ustawiające filtrowanie płyt na wybranego wykonawcę i 

wybraną kategorię muzyki. 

13) Przycisk polecenia zamykający formularz 

14 

10 

13 

12 

11 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

14) Podformularz Plyty_pf wyświetlający informacje o nagraniach znajdujących się na 

płycie (z tabeli NAGRANIA). 

• 

PLYTY PF - formularz będący częścią składową formularza zespolonego PLYTY 

• 

WYKONAWCA - formularz do edycji i wprowadzania danych o wykonawcach. 

Ć

WICZENIE 1 

1.  Otwórz bazę danych, która znajduje się w pliku muzyka97_1.mdb 

2.  Proszę zapoznać się z relacjami, indeksami i właściwościami pól poszczególnych tabel. 

3.   Następnie  krótko  przedyskutować  wady  i  zalety  projektu  a  w  szczególności  wymuszania 

mechanizmów  kaskadowych  oraz  ustawienie  właściwości,  „wymagane”  dla  pól  kluczy 
obcych na „Tak”. 

Ć

WICZENIE 2 

Jakie znaczenie mają właściwości połączeń, ustawione w sposób przedstawiony na rysunku 1 
ilustruj
ącym relacje w bazie danych, dla tej bazy (przy istniejących w bazie właściwościach 
pól)? 

Zdarzenia - ich rola w tworzeniu aplikacji 

Access jest aplikacją sterowaną zdarzeniami. Co to w praktyce oznacza?  

Podczas pracy aplikacji dzieją się róŜne rzeczy, uŜytkownik naciska klawisze na klawiaturze, 
klika  myszką,  wpisuje  nowe  wartości  do  pól,  w  bazie  danych  do  tabel  dodawane  są  nowe 
rekordy, formularze są otwierane i zamykane, raporty są formatowane itd..  

Na  większość  tego  typu  zdarzeń  Access  potrafi  reagować.  Zadaniem  uŜytkownika-
programisty  jest  zaprojektowanie  aplikacji  w  taki  sposób,  aby  większość  operacji  na  bazie 
danych wykonywana była automatycznie w odpowiedzi na zachodzące w bazie zdarzenia. Do 
tego  celu  słuŜą  makra  i  procedury  języka  Visual  Basic,  które  podłączone  do  właściwości 
zdarzeń  wybranych  obiektów  powodują  w  bazie  poŜądane  działania.  Na  przykład,  jeśli 
chcemy  by  po  kliknięciu  myszą  przycisku  z  napisem  PokaŜ  klientów  otwierany  był 
automatycznie formularz z listą klientów, lub po kliknięciu przycisku Zestawienie kwartalne 
drukowany był raport z podsumowaniem sprzedaŜy za kwartał musimy sami zaprogramować 
reakcję programu Access na zdarzenie „przy kliknięciu” dla danego przycisku. 

Reakcję  taką  moŜemy  uzyskać  tworząc  odpowiednie  makro  i  przypisując  je  właściwości 
wybranego  zdarzenia  dla  wybranego  obiektu  (formantu)  lub  pisząc  procedurę  obsługi 
zdarzenia. W tej części szkolenia zajmować się będziemy tworzeniem makr i przypisywaniem 
ich odpowiednim zdarzeniom.  

PoniŜej przedstawiamy niektóre typy zdarzeń według kategorii zdarzeń.  

UWAGA:  Zdarzenia  moŜna  obsługiwać  za  pomocą  makr  programu  Access  lub  za  pomocą 
procedur języka Visual Basic. O ile przy programowaniu obsługi zdarzeń przy pomocy makr 
nazwy zdarzeń są polskie, o tyle w języku Visual Basic występują nazwy angielskie. 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

6 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Zdarzenia okien - gdy uŜytkownik otwiera, zamyka lub zmienia rozmiar formularza lub 
raportu. 

 

Zdarzenie 

Opis 

Przy otwarciu (Open) 

Po otwarciu, lecz przed wyświetleniem pierwszego rekordu. Dla 
raportów zdarzenie to występuje przed podglądem wydruku albo 
przed wydrukowaniem raportu. 

Przy załadowaniu (Load) 

Zdarzenie Load występuje, gdy formularz zostaje otwarty i 
wyświetlane są jego rekordy 

Przy zmianie rozmiaru 
(Resize) 

Podczas zmiany rozmiaru, lecz takŜe podczas otwarcia 
formularza, czy raportu.  

Przy zwolnieniu (Unload) 

Po zamknięciu formularza, lecz przed usunięciem go z ekranu. 

Przy zamknięciu (Close) 

Po zamknięciu i usunięciu z ekranu 

 

Zdarzenia fokusu - zwrot „Dany element ma fokus ” oznacza, Ŝe na dany element przyjmuje 
ewentualne znaki wprowadzane z klawiatury (reaguje na naciśnięcia klawiszy). Zdarzenia 
fokusu następują, gdy element sterujący uzyskuje lub traci fokus , na przykład po naciśnięciu 
klawisza ENTER lub po kliknięciu myszką innego elementu.  

 

Zdarzenie 

Opis 

Przy aktywowaniu (Activate) 

Kiedy formularz lub raport stają się aktywne. 

Przy wejściu (Enter) 

Po aktywacji, lecz przed uzyskaniem fokusu 
przez element sterujący.  

Przy uzyskaniu fokusu (GotFocus) 

Kiedy formularz lub element sterujący 
uzyskuje fokus. 

Przy zakończeniu (Exit) 

Zanim element sterujący straci fokus. 

Przy utracie fokusu (LostFocus) 

Kiedy element sterujący straci fokus. 

Przy dezaktywowaniu (Deactivate) 

Kiedy formularz lub raport jest zamykany, ale 
zanim inne okno stanie się aktywne. 

UWAGA. Zdarzenia Activate i Deactivate 
występują tylko w przypadku przenoszenia 
fokusu w ramach aplikacji. Przenoszenie 
fokusu na obiekt lub z obiektu w innej 
aplikacji nie wyzwala Ŝadnego z tych zdarzeń. 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Zdarzenia danych – występują, gdy dane w formularzu lub elemencie sterującym są 
wprowadzane, usuwane lub zmieniane oraz gdy następuje przeniesienie fokusu z rekordu do 
innego rekordu. 

 

Zdarzenie 

Opis 

Przed wstawieniem (BeforeInsert) 

Zachodzi, gdy uŜytkownik wpisze pierwszy 
znak w nowym rekordzie, lecz jeszcze przed 
utworzeniem nowego rekordu w bazie 

Przed aktualizacją (BeforeUpdate) 

Zachodzi przed aktualizacją rekordu lub 
zmianą danych w elemencie sterującym 

Po aktualizacji (AfterUdate) 

Zachodzi po zmianie danych w elemencie 
sterującym lub po aktualizacji rekordu. 

Po wstawieniu (AfterInstert) 

Zachodzi po dodaniu nowego rekordu, ale 
przed jego aktualizacją. 

Przy usunięciu (Delete) 

Zachodzi po naciśnięciu klawisza Delete, lub 
uruchomieniu polecenia usunięcia rekordu, 
lecz przed jego usunięciem. 

Przed usunięciem (BeforeDelConfirm) 

Po usunięciu jednego lub kilku rekordów lecz 
przed wyświetleniem prze Accessa 
komunikatu o potwierdzeniu usunięcia. 

Po usunięciu (AfterDelConfirm) 

Zachodzi, gdy uŜytkownik potwierdził 
usunięcie i rekordy są usuwane lub operacja 
jest anulowana. 

Przy zmianie (Change) 

Po zmianie zawartości pola tekstowego lub 
pola kombi (po wpisaniu przez uŜytkownika 
pierwszego znaku) 

Przy bieŜącym (Current) 

Zachodzi, gdy rekord uzyskuje fokus lub staje 
się bieŜącym. Pojawia się równieŜ po 
ponowieniu zapytania źródła rekordów 
formularza. 

Przy wartości spoza listy (NotInList) 

Pojawi się, gdy uŜytkownik wprowadzi do 
pola kombi wartość, której nie ma na liście 

Przy aktualizacji (Updated) 

Zdarzenie występuje, gdy dane obiektu OLE 
zostały zmodyfikowane od ostatniego zapisu. 

 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

8 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Zdarzenia myszy - w czasie wykonywania operacji myszą 

Zdarzenie  

Opis 

Przy naciśniętej myszy (MouseDown) 

Po naciśnięciu dowolnego przycisku myszy 

Przy zwolnionej myszy (MouseUp) 

Po zwolnieniu naciśniętego przycisku myszy 

Przy kliknięciu (Click) 

Po kliknięciu lewym przyciskiem myszy 

Przy kliknięciu dwukrotnym (DblClick) 

Po dwukrotnym kliknięciu lewym przyciskiem 
myszy 

Przy ruchu myszy (MouseMove) 

Po poruszeniu myszką nad elementem sterującym 

 

Zdarzenia klawiatury - gdy uŜytkownik pisze na klawiaturze lub wysyła znaki za pomocą 
Akcji WyślijKlawisze lub instrukcji SendKeys, gdy element sterujący lub formularz ma fokus 

Zdarzenie 

Opis 

Przy naciśniętym klawiszu (KeyDown) 

Po naciśnięciu klawisza 

Przy naciśnięciu klawisza (KeyPressed) 

Po naciśnięciu i zwolnieniu klawisza 

Przy zmianie (Change) 

Po zmianie zawartości pola tekstowego lub pola 
kombi (po wpisaniu przez uŜytkownika 
pierwszego znaku) 

Przy zwolnieniu klawisza (KeyUp) 

Po zwolnieniu klawisza 

 

Zdarzenia drukowania –występują, gdy raport jest drukowany lub formatowany 

Zdarzenie 

Opis 

Przy formatowaniu (Format) 

Po określeniu, jakie dane będą w sekcji, lecz przed 
sformatowaniem sekcji do wydruku lub podglądu 
wydruku. 

Przy wydruku (Print) 

Kiedy dane w sekcji są juŜ sformatowane, lecz nie 
zostały jeszcze wydrukowane 

Przy powrocie (Retreat) 

Kiedy podczas formatowania Access wraca do 
poprzednich sekcji 

Przy braku danych (NoData) 

Po sformatowaniu do drukowania raportu, w 
którym nie ma danych (raport jest związany z 
pustym zestawem rekordów), lecz przed 
wydrukowaniem raportu. Zdarzenie to moŜna 
wykorzystać do anulowania pustego raportu. 

Przy stronie (Page ) 

Po sformatowaniu strony do drukowania, lecz 
przed wydrukowaniem strony. Zdarzenie to 
moŜna wykorzystać np. do narysowania ramki 
wokół strony. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Zdarzenie dodatkowe - „Timer”- (Przy cyklu czasomierza) występuje w regularnych 
odstępach czasu określonych we właściwości „TimerInterval”(Okres czasomierza) 

Przy programowaniu zdarzeń trzeba zwracać uwagę na dwa istotne czynniki: 

• 

Trzeba  pamiętać,  Ŝe  niektóre  zdarzenia  automatycznie  pociągają  za  sobą  wystąpienie 
innych.  Na  przykład  przed  zdarzeniem  „Dwukrotne  kliknięcie  (DblClick)”  wystąpią 
kolejno  zdarzenia  „Naciśnięcie  myszy  (MouseDown)”,  „Zwolnienie  myszy  (MouseUp)”, 
„Kliknięcie (Click)”.  

• 

WaŜna  jest  kolejność,  w  jakiej  zdarzenia  występują  po  sobie.  Szczegółowy  opis 
następowania  zdarzeń  znajduje  się  w  pomocy  programu  Access.  W  tym  miejscu 
przytoczymy tylko kilka najczęściej spotykanych sytuacji: 

Otwieranie formularza: Otwarcie (Open) >Załadowanie(Load) >Zmiana rozmiaru 
(Resize) >Aktywacja(Active) > Bie
Ŝący (Current) 

Zamykanie formularza :Zwolnienie (Unload) > Dezaktywacja (Deactivate) > 
Zamkni
ęcie (Close) 

Wejście i wyjście do elementu sterującego : Wejście (Enter) > Uzyskanie fokusu 
(GotFocus) > Zako
ńczenie (Exit) > Utrata fokusu (LostFocus) 

Zmiana tekstu w polu edycji lub w polu tekstowym : Naciśnięcie klawisza 
(KeyDown) >Naci
śnięty klawisz (KeyPress) > Zmiana (Change) > Zwolnienie 
klawisza (KeyUp) 

Usunięcie rekordu: Przy usunięciu (Delete) >Przy bieŜącym (Current) > Przed 
usuni
ęciem (BeforeDelConfirm) > Po usunięciu (AfterDelConfirm) 

UWAGA:  W  niektórych przypadkach moŜe zachodzić potrzeba anulowania zdarzenia, które 
uruchomiło makro lub procedurę. MoŜna to zrobić za pomocą makra, w którym wystąpi akcja 
AnulujZdarzenie  (CancelEvent),  lub  za  pomocą  procedury  zdarzenia,  nadając  argumentowi 
Cancel  takiej  procedury  wartość  True.  (Tylko  dla  tych  procedur  zdarzeń,  dla  których 
argument  ten  występuje).  Procedury  zdarzeń  będą  omawiane  w  dalszej  części  podręcznika. 
Akcją AnulujZdarzenie – CancelEvent moŜna anulować następujące zdarzenia: 

 

Przy zastosowaniu filtru (ApplyFilter) 

Przy filtrowaniu (Filter)  

Przed usunięciem (BeforeDelConfirm) 

Przed wstawieniem (BeforeInsert) 

Przed aktualizacją (BeforeUpdate 

Przy kliknięciu dwukrotnym (DblClick) 

Przy usunięciu (Delete) 

Przy zakończeniu (Exit) 

Przy formatowaniu (Format) 

Przy otwarciu (Open) 

Przy wydruku (Print) 

Przy zwolnieniu (Unload) 

Przy buforowaniu (Dirty) 

Przy braku danych (NoData) 

Przy naciśniętym klawiszu (KeyPress) 

<- dostępne tylko w makrach 

Przy naciśnięciu klawisza (KeyDown) 

<- dostępne tylko w makrach 

Przy naciśniętej myszy (MouseDown) 

<- prawy przycisk myszy tylko makra 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

10 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Schemat programowania obsługi zdarzeń wygląda następująco: 

Jeśli wystąpienie zdarzenia dla jakiegoś elementu sterującego ma skutkować wykonaniem 
jakiegoś działania naleŜy: 

• 

Wyświetlić element sterujący w widoku projekt (na przykład przycisk na formularzu, pole 
tekstowe). 

• 

Zaznaczyć go klikając myszą 

• 

Wyświetlić listę właściwości danego obiektu (wybierając polecenie Widok > Właściwości) 

• 

Wybrać kategorię właściwości: Zdarzenie 

• 

Po odszukaniu właściwości wybranego zdarzenia, jako wartość właściwości naleŜy: 

Wybrać makro z listy utworzonych wcześniej makr (lub uruchomić generator makr  
by je utworzyć) lub 

W polu właściwości wybrać Procedura zdarzenia, wyświetlić generator kodu i wpisać 
treść procedury. 

ZALECENIA DO ĆWICZEŃ

Celem  poniŜszych  ćwiczeń  jest  utworzenie  makr,  które  będą  obsługiwać  fragment  aplikacji. 
Makro  AutoExec  ma  po  otwarciu  bazy  danych  ukrywa
ć  okno  bazy  danych  i  uruchamiać 
formularz LOGO. Po klikni
ęciu tego formularza (lub po upływie czasu) formularz LOGO ma 
by
ć  zamykany  a  otwierany  formularz  PANEL.  Działanie  formularza  PANEL  będziemy 
programowa
ć  juŜ  w  języku  Visual  Basic.  W  tej  części  ćwiczeń  zaprogramujemy  jeszcze  za 
pomoc
ą makr reakcję przycisków na formularzu PLYTY..  

W  ćwiczeniach  tych  wystąpią  akcje:  OtwórzFormularz,  Zamknij,  OknoKomunikatu, 
UruchomPolecenie. 

Ć

WICZENIE 3 

Proszę w oknie makro utworzyć makro o nazwie Logo. Zadaniem tego makra będzie 
wykonanie dwóch akcji: 

• 

Zamknięcie formularza LOGO (Akcja Zamknij

• 

Otwarcie formularza PANEL (Akcja OtwórzFormularz

Ć

WICZENIE 4 

1.  Proszę  podłączyć  makro  Logo  do  właściwości  „Przy  kliknięciu”  dla  sekcji  szczegółów 

oraz dwóch etykiet znajdujących się na formularzu LOGO, 

2.  Makro  naleŜy  podłączyć  równieŜ  do  właściwości  całego  formularza  „Przy  cyklu 

czasomierza”  ”  i  ustawić  właściwość  formularza  „Okres  czasomierza”  na  3  sekundy 
(3000). 

3.  Proszę  otworzyć  formularz  LOGO  w  widoku  Formularz  i  sprawdzić  czy  reaguje  na 

kliknięcie i na upływ czasu. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

11 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE  5 

Proszę samodzielnie utworzyć i podłączyć do etykiety „Informacja o autorze” makro o nazwie 
Info.  Zadaniem  makra  b
ędzie  wyświetlenie  komunikatu  z  informacją  o  autorze  -  akcja 
uruchamiana  po  dwukrotnym  klikni
ęciu  etykiety.  (Akcja  makra  OknoKomunikatu).Do 
zawini
ęcia tekstu moŜna uŜyć skrótu Ctrl+Enter. 

Ć

WICZENIE 6 

1.  Proszę utworzyć i podłączyć do odpowiednich zdarzeń makro grupowe o nazwie Przyciski

2.  Makro  ma  obsługiwać  siedem  przycisków  znajdujących  się  na  formularzu  PLYTY,  oraz 

sześć  z  formularza  WYKONAWCA  reagując  na  kliknięcie  kaŜdego  z  przycisków  (dla 
wszystkich  przycisków  polece
ń  za  wyjątkiem  przycisków  „Wykonawcy”  i  „Kategorie”. 
Przyciski „wykonawcy” i „kategorie” zostan
ą podłączone w późniejszym czasie). 

3.  Makra: 

Pierwszy (akcja UruchomPolecenie, polecenie PrzejdźDoPierwszegoRekordu) 

Poprzedni (akcja UruchomPolecenie, polecenie PrzejdźDoPoprzedniegoRekordu) 

Następny (akcja UruchomPolecenie, polecenie PrzejdźDoNastępnegoRekordu) 

Ostatni (akcja UruchomPolecenie, polecenie PrzejdźDoOstatniegoRekordu) 

Usuń płytę (akcja UruchomPolecenie, polecenie UsuńRekord) 

Zamknij formularz (akcja Zamknij bez Ŝadnych argumentów) 

Nowa płyta (akcja UruchomPolecenie, polecenie PrzejdźDoNowegoRekordu) 

4. Proszę zaobserwować działanie przycisków „Poprzedni”, ”Następny”, „Nowa płyta”. Z 
czym jest kłopot? 

Ustawianie sposobu uruchamiania bazy danych 

W  poprzednich  wersjach  programu  Access  do  automatycznego  wykonywania  pewnych 
działań przy uruchamianiu bazy danych słuŜyło makro o nazwie AutoExec. W wersji Access 
97 moŜna ustawić właściwości startowe bazy danych za pomocą polecenia Autostart z menu 
Narzędzia. Do wyboru są między innymi następujące opcje: 

• 

Ustawienie tytułu aplikacji 

• 

Przyporządkowanie ikony do aplikacji 

• 

Ustawienie domyślnego paska menu 

• 

Ustawienie formularza startowego. 

• 

Ukrycie okna bazy danych i paska stanu. 

Ć

WICZENIE 7 

Proszę  ustawić  właściwości  startowe  bazy  danych  w  taki  sposób,  aby  po  uruchomieniu 
wy
świetlany  był  formularz  LOGO,  ukrywane  było  okno  bazy  danych.  Proszę  ustawić  tytuł 
aplikacji na Wypo
Ŝyczalnia, oraz dobrać dowolną ikonę dostępną w komputerze.  

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

12 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Lista wybranych akcji 

W  poniŜszej  tabeli  znajduje  się  omówienie  akcji,  które  moŜna  uruchomić  za  pomocą  makr. 
UWAGA: Akcje moŜna równieŜ uruchomić z poziomu kodu języka Visual Basic, z tą tylko 
róŜnicą,  Ŝe  w  języku  tym  nazwy  akcji  oraz  ich  argumenty  są  angielskojęzyczne.  Z  tego  teŜ 
powodu obok nazw polskich w tabeli przedstawione zostały ich angielskie odpowiedniki. 

 

Akcja 

Opis 

DodajMenu (AddMenu) 

Dodaje  menu  do  własnego  paska  menu.  Argumenty  akcji:  Nazwa 
menu, Nazwa makra menu, Tekst paska stanu 

ZastosujFiltr 
(ApplyFilter) 

Uruchamia filtr w postaci nazwanego filtru, kwerendy lub klauzuli 
WHERE  języka  SQL  (bez  słowa  kluczowego  WHERE).  Lewa 
strona  wyraŜenia  WHERE  zawiera  zwykle  nazwę  pola  z  tabeli 
podstawowej,  kwerendy,  formularza  lub  raportu.  Jeśli  występuje 
odwołanie  do  elementów  sterujących  to  nazwa  elementu  powinna 
występować  w  pełnej  składni:  Formularz!  [Nazwa  formularza]! 
[Element sterujący]. Maksymalna długość klauzuli WHERE to 256 
znaków.  Filtr  stosuje  się  w  celu  ograniczenia  informacji 
prezentowanych w tabel, formularza lub raporcie. 

Sygnał 
(Beep) 

Sygnał dźwiękowy z komputerowego głośnika. 

AnulujZdarzenie 
(CancelEvent) 

Anuluje  zdarzenie,  które  spowodowało  uruchomienie  makra.  Lista 
zdarzeń, które moŜna anulować została przedstawiona wcześniej. 

Zamknij 
(Close) 

Zamyka 

okno 

otwartego 

obiektu 

określonego 

podanymi 

argumentami.  Jeśli  nie  zostaną  podane  Ŝadne  argumenty,  Access 
zamyka aktywne okno, a przy braku aktywnego okna zamyka bazę 
danych.  MoŜna  wskazać  czy  przy  zamknięciu  obiektu  mają  być 
zachowane dokonane zmiany, czy nie. 

KopiujObiekt 

(

CopyObject

)

 

Kopiuje wybrany obiekt do innej bazy Microsoft Access lub do tej 
samej bazy pod inną nazwą. 

UsuńObiekt 

(DeleteObject) 

Usuwa wybrany obiekt z bazy danych. 

UruchomPolecenie 

(RunCommand) 

Wykonuje wybrane polecenie menu. Polecenie musi mieć sens dla 
obiektu. Na przykład nie moŜna wykonać poleceń z menu Rekordy, 
jeśli obiekt wyświetlany jest w momencie uruchomienia makra w 
widoku „projekt”. Na liście Polecenia dostępnych jest ponad 300 
wbudowanych poleceń programu MS Access. 

Echo 

(Echo) 

Włącza  lub  wyłącza  odświeŜanie  ekranu.  Drugi  parametr  zawiera 
tekst  paska  stanu.  Akcja  Echo  występuje  zwykle  w  połączeniu  z 
akcją Klepsydra. 

ZnajdźNastępny 

(FindNext) 

Znajduje  następny  rekord  spełniający  warunki  określone  w 
ostatnim wywołaniu akcji ZnajdźRekord.  

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

13 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Akcja 

Opis 

ZnajdźRekord 

(FindRecord) 

Wyszukuje  rekord  spełniający  warunki  określone  argumentami. 
Argumenty  są  takie  same,  jak  argumenty  w  polu  dialogu 
wyświetlanego z menu poleceniem Edycja > Znajdź 

IdźDoFormantu 

(GoToControl) 

Akcja  przenosząca  fokus  do  elementu  sterującego  aktywnym 
formularzu.  Jako  argument  naleŜy  podać  nazwę  elementu.  MoŜna 
przenieść  fokus  tylko  do  tych  elementów,  które  mogą  go  mieć. 
Akcja dotyczy równieŜ pól w tabeli, czy kwerendzie. 

IdźDoStrony 

(GoToPage) 

Akcja  przenosi  fokus  do  pierwszego  elementu  sterującego  na 
podanej stronie aktywnego formularza. 

IdźDoRekordu 

(GoToRecord) 

Akcja  ustawia  podany  rekord  jako  rekord  bieŜący  tabeli, 
formularza  lub  kwerendy.  Jeśli  jako  argument  rekord  wybrana 
została  wartość  Poprzedni  lub  Następny  to  argument  Skok 
precyzuje o ile rekordów zostanie przesunięty nowy bieŜący rekord 
względem  aktualnego.  Jeśli  argumentem  jest  IdźDo  to  rekordem 
bieŜącym będzie rekord o numerze podanym w argumencie Skok. 

Klepsydra 

(Hourglass) 

Zmienia  wskaźnik  myszy  na  klepsydrę  podczas  wykonywania 
makra. Akcja wykorzystywana zwykle w połączeniu akcją Echo 

Maksymalizuj 
(Maximize

)

 

Powiększa aktywne okno na cały ekran 

Minimalizuj 

(Minimize) 

Zwija aktywne okno do ikony 

RuchRozmiar 

(MoveSize) 

Przesuwa lub zmienia rozmiary aktywnego okna.  

OknoKomunikatu 

(MsgBox) 

Wyświetla  okno  z  komunikatem    lub  ostrzeŜeniem.  UŜytkownik 
moŜe  wybrać  typ  komunikatu,  tekst  komunikatu,  tytuł  okna  i 
zdecydować czy będzie sygnał dźwiękowy 

OtwórzFormularz 

(OpenForm) 

Otwiera  formularz  w  widoku  formularz,  arkusz  danych,  podgląd 
wydruku lub projekt. Za pomocą argumentów akcji moŜna ustawić 
filtr  dla  formularza  lub  klauzulę.  Tryby  otwarcia  formularza  to: 
Dodawanie, Edycja, Tylko do odczytu. 

OtwórzModuł 

(OpenModule) 

Otwiera wybrany moduł w widoku projekt podanej procedury 

OtwórzKwerendę 

(OpenQuery) 

Uruchamia kwerendę w jednym z trzech widoków (projekt, arkusz 
danych, podgląd wydruku). 

OtwórzRaport 

(OpenReport) 

Otwiera  wybrany  raport  w  widoku  projekt  lub  podgląd  wydruku, 
albo  wysyła  raport  do  wydruku  (widok  wydruk).  Dla  raportu 
moŜna określić filtr lub klauzulę WHERE. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

14 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Akcja 

Opis 

OtwórzTabelę 

(OpenTable) 

Otwiera  wybraną  tabelę  w  jednym  z  trzech  widoków  (projekt, 
arkusz danych, podgląd wydruku) 

WyprowadźDo 

(OutputTo) 

Wysyła dane z wybranego obiektu bazy danych do osobnego pliku. 
MoŜe to być plik tekstowy txt, plik w formacie arkusza Excela xls
plik  formatu  rich-text  rtf,  plik  formatu  html,  plik  Internet 
Information Serwera idc lub htx, albo plik Active Serwera asp

Wydruk 

(PrintOut) 

Drukuje  aktywny  obiekt  bazy  danych.  MoŜna  wybrać  zakres 
wydruku, numery stron, jakość i sortowane kopii. 

Zakończ 

(Quit) 

Kończy  pracę  programu  MS  Access.  MoŜliwe  są  trzy  ustawienia 
argumentu  Opcje:  Zapisz  wszystkie,  Potwierdzaj  i  Zakończ.  Ta 
ostatnia  opcja  powoduje  zakończenie  pracy  bez  zachowywania 
zmian. 

ZmieńNazwę 

(Rename) 

Zmienia nazwę wybranego obiektu. Obiekt musi być zamknięty. 

OdświeŜObiekt 

(RepaintObject) 

Wymusza  natychmiastowe  zakończenie  rozpoczętych  aktualizacji 
ekranu  i  przeliczania  elementów  sterujących  na  aktywnym 
formularzu 

PonówKwerendę 

(Requery) 

Aktualizuje  dane  źródłowe  formantu  lub,  jeśli  aktywny  jest 
formularz  to  formularza  przez  ponowne  wykonanie  kwerendy. 
UŜywane  do  aktualizacji  zawartości  pól  list,  pól  kombi  i 
formularzy. 

Przywróć 

(Restore) 

Przywraca  poprzednie  rozmiary  okna  zwiniętego  do  ikony  lub 
rozwiniętego  na  cały  ekran.  Akcja  bez  parametrów,  działa  na 
aktywnym oknie. 

UruchomAplikację 

(RunApp) 

Uruchamia aplikację (naleŜy podać nazwę pliku wykonywalnego 
wraz ze ścieŜką dostępu), po uruchomieniu aplikacji aplikacja 
działa na pierwszym planie, a makro kontynuuje działanie. 

Uruchom kod 

(RunCode) 

Wywołuje funkcję języka Visual Basic 

UruchomMakro 

(RunMacro) 

Podajemy  nazwę  makra.  MoŜna  jako  argumenty  podać  liczbę 
powtórzeń oraz wyraŜenie, które gdy stanie się fałszywe, zatrzyma 
działanie makra. 

UruchomSQL 

(RunSQL) 

Uruchamia  instrukcję  SQL  będącą  kwerendą  funkcjonalną,  czyli 
modyfikującą  dane,  lub  kwerendą  definiującą  dane.  MoŜna 
uruchomić polecenie SQL uŜywając przetwarzania transakcyjnego, 
które  dokładniej  zostanie  omówione w dalszej części podręcznika. 
Max  długość  instrukcji  SQL  to  255  znaków.  śeby  uruchomić 
dłuŜszą instrukcję naleŜy uŜyć akcji OtwórzKwerendę. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

15 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Akcja 

Opis 

WybierzObiekt 

(SelectObject) 

Jeśli  trzeci  argument  „w  oknie  bazy  danych”  ustawiony  jest  na 
NIE,  wybiera  otwarty  obiekt  o  podanej  nazwie  i  typie.  Jeśli  trzeci 
argument  „w  oknie  bazy  danych”  ustawiony  jest  na  TAK,  ustawia 
się  na  nazwie  wybranego  obiektu  w  oknie  bazy  danych.  Jeśli baza 
danych była ukryta to automatycznie jest odkrywana (dotyczy tylko 
opcji  TAK)  UŜyteczna  technika,  jeŜeli  chcemy  wyświetli  ukryte 
okno bazy danych! 

WyślijKlawisze 

(SendKeys) 

Wysyła  podane  jako  argument  klawisze  (symulacja  pracy  na 
klawiaturze) 

WyślijObiekt 

(SendObject) 

Dołącza  arkusz,  formularz,  raport  lub  moduł  do  listu  poczty 
elektronicznej. 

Argument 

Czekaj=Tak 

wstrzymuje 

dalsze 

instrukcje makra do zakończenia symulacji. 

UstawWartość 

(SetValue) 

UstawWartość  bardzo  często  wykorzystywana  akcja  za  pomocą 
której  moŜna  zmienić  wartość  samego  elementu  sterującego  lub 
wartość wybranej właściwości tego elementu. Z akcji tej będziemy 
bardzo często korzystać w języku Visual Basic. 

UstawOstrzeŜenie 

(SetWarnings) 

Włącza  lub  wyłącza  wyświetlanie  komunikatów  systemowych. 
Powoduje  zablokowanie  wyświetlania  komunikatów  modalnych  w 
czasie  wykonywania  makra.  Nie  blokuje  jednak  wyświetlania 
komunikatów  o  błędach  wykonania  ani  pól  dialogowych,  jeśli 
wymaga tego makro. 

PokaŜWszystkieRekordy 

(ShowAllRecords) 

Usuwa  filtr  ustawiony  dla  tabeli  formularza,  lub  kwerendy  i 
wyświetla wszystkie rekordy 

PokaŜPasekNarzędzi 

(ShowToolbar) 

Wyświetla 

lub 

ukrywa 

wbudowane 

paski 

narzędzi 

lub 

niestandardowe paski narzędzi utworzone przez uŜytkownika. 

ZatrzymajWszystkie 
Makra 

(StopAllMacros) 

Zatrzymuje działanie wszystkich aktualnie działających makr.  

ZatrzymajMakro 

(StopMacro) 

Zatrzymuje działające makro. 

TransportBazyDanych 

(TransferDatabase) 

Importuje, eksportuje lub dołącza obiekty z i do innych baz danych. 

TransportArkusza 

(TransferSpreadsheet) 

Importuje  lub  eksportuje  dane  z  lub  do  arkusza  kalkulacyjnego 
Excela, lub Lotusa. 

TransportTekstu 

(TransferText) 

Importuje lub eksportuje dane do plików tekstowych. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

16 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Akcja 

Opis 

Zapisz 

(Save) 

Akcji  Zapisz  moŜna  uŜyć  do  zapisania  określonego  obiektu 
programu  Microsoft  Access  lub  obiektu  aktywnego,  jeśli  Ŝaden 
obiekt  nie  jest  określony.  MoŜna  w  niektórych  przypadkach  takŜe 
zapisać  obiekt  aktywny  pod  nową  nazwą  (działa  to  tak  samo  jak 
polecenie Zapisz jako z menu Plik). 

UstawElementMenu 

(SetMenuItem 

Akcji  UstawElementMenu  moŜna  uŜyć  do  ustawienia  stanu 
elementów  menu  (włączone  lub  wyłączone,  zaznaczone  lub  nie 
zaznaczone)  na  niestandardowym  pasku  menu  lub  globalnym 
pasku menu aktywnego okna. 

Obiekty Microsoft Access - ich wła

ś

ciwo

ś

ci i metody 

Baza  danych  składa  się  z  dwóch  róŜnych  rodzajów  obiektów.  Pierwszy  rodzaj  obiektów  to 
obiekty  Microsoft  Access.  Drugi  rodzaj  to  obiekty  dostępu  do  danych  (DAO,  Data  Access 
Object). W tej części szkolenia będziemy się zajmować obiektami Microsoft Access.  

KaŜdy  obiekt  ma  swoje  właściwości  (w  przypadku  formularzy,  raportów  i  formantów  listę 
właściwości  obiektu  moŜna  wyświetlić  otwierając  obiekt  w  widoku  Projekt  i  wybierając 
polecenie  Widok  >  Właściwości,  lub  wybierając  nazwę  obiektu  w  Konstruktorze  wyraŜeń). 
Ustawienia  właściwości  obiektów  moŜna  odczytywać  a  takŜe  zmieniać  (ustawiać)  podczas 
pracy aplikacji.  

Oprócz  właściwości  obiekty  mają  swoje  metody.  Metody  są  to  operacje  (działania),  które 
moŜna  na  obiektach  wykonywać.  Na  przykład  jedną  z  metod  obiektu  typu  formularz  jest 
metoda Requery (PonówKwerendę). Metoda ta powoduje ponowne wykonanie kwerendy dla 
ź

ródła rekordów formularza. 

Otwarte obiekty typu formularz tworzą razem Kolekcję Formularzy (Forms), która sama w 
sobie jest obiektem, podobnie otwarte obiekty typu raport tworzą kolekcję raportów, która 
takŜe jest obiektem. PoniewaŜ kolekcja formularzy i kolekcja raportów same w sobie równieŜ 
są obiektami mają więc swoje właściwości.  

Obiekty  z  kolekcji  formularzy  lub  z  kolekcji  raportów  numerowane  są  od  0  zgodnie  z 
kolejnością otwarcia. 

Hierarchia obiektów wygląda następująco:  

• 

Na  szczycie  hierarchii  znajduje  się  obiekt  Application  (Aplikacja).  Obiekt  Aplikacja 
określa całą aplikację Microsoft Access. Obiektu tego uŜywamy jeśli chcemy zastosować 
metodę do całej aplikacji lub ustawić właściwości całej aplikacji. Na przykład za pomocą 
właściwości  MenuBar  moŜna  ustawić  dostosowany  pasek  menu  dla  całej  aplikacji. 
UŜywając do całej aplikacji metody SetOption moŜna ustawić parametry aplikacji z okna 
dialogowego Narzędzia > Opcje 

• 

Obiekt  Application  zawiera  w  sobie  wiele  róŜnych  kolekcji  i  obiektów  np.  kolekcję 
Forms  obiektów  typu  Formularz,  kolekcję  Reports  obiektów  typu  Raport,  Kolekcję 
Modules obiektów typu Moduł, oraz obiekty: ScreenDoCmd i inne dostępne w pomocy 
pod hasłem „Microsoft Access Objects” 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

17 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

• 

W skład obiektów typu Report i Form wchodzą kolekcje Controls obiektów typu Formant 
(element sterujący). 

Do obiektu, który naleŜy do kolekcji formularzy moŜna odwoływać się na trzy sposoby: 

Forms![nazwa formularza] 

Forms(„Nazwa formularza”) 

Forms(numer formularza) 

 

Do raportów odwołujemy się w podobny sposób: 

Reports![Nazwa raportu] 

Reports(„Nazwa raportu”) 

Reports(numer raportu) 

Do  elementów  sterujących  (formantów)  na  formularzach  i  raportach  odwołujemy  się  jak  na 
poniŜszych przykładach uŜywając jako nazwy kolekcji odpowiednio Forms lub Reports: 

Nazwa_kolekcji![nazwa formularza]![nazwa elementu sterującego] 

Do właściwości obiektów odwołujemy się za pomocą kropki i nazwy właściwości: 

Nazwa_kolekcji![nazwa formularza].właściwość 

Nazwa_kolekcji![nazwa formularza]![nazwa elementu sterującego].właściwość 

Metody obiektów wywołujemy w następujący sposób (przykład) 

Nazwa_kolekcji![nazwa formularza].metoda argument1, argument2 itd... 

Nazwa_kolekcji![nazwa 

formularza]![nazwa 

elementu 

sterującego].metoda 

argument1, _ argument2 

UWAGA: Nie wszystkie metody wymagają podawania argumentów. 

UWAGA:  Argumenty  umieszczamy  w  nawiasach  po  nazwie  metody  wtedy,  gdy  metoda 
zwraca wynik. Jeśli tylko wykonuje działanie na obiekcie, to nawiasy są niepotrzebne. 

Właściwości obiektów ustawiamy w następujący sposób 

Nazwa kolekcji![Nazwa formularza]![Nazwa elementu sterującego].Właściwość = _ 
nowa warto
ść 

Przykład: 

Forms![mój formularz]![przycisk rejestruj].Visible = False 

Szczegółowy  opis  wszystkich  metod  i  właściwości  poszczególnych  obiektów  znajduje  się  w 
pomocy w tematach Objects i Properties. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

18 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Wybrane metody i wła

ś

ciwo

ś

ci niektórych obiektów. 

Obiekt Aplikacja – wybrane metody 

Echo 

Składnia – Aplikacja.Echo echoon, [tekst_paska_stanu]. 

Włącza (echoon = True) lub wyłącza (echoon = False) odświeŜanie 
ekranu. 

GetOption, SetOption 

Aplikacja.GetOption(nazwa_opcji) 

Aplikacja.SetOption nazwa_opcji, ustawienie 

Akcja ta ustawia lub odczytuje wartości opcji, które moŜna ustawić 
dla  aplikacji  z  okna  bazy  danych  poleceniem  Narzędzia  >  Opcje. 
Opcje podzielone są na kilka grup: 

Widok, 

Ogólne, 

Edytowanie/Znajdowanie, 

Klawiatura, 

Arkusz_Danych, 

Tabele/Kwerendy, 

Formularze/Raporty, 

Zaawansowane. 

Quit 

Aplikacja.Quit [argument] 

Akcja  kończy  pracę  z  programem  Access.  Jako  argument  mogą 
wystąpić następujące stałe predefiniowane: 

AcQuitPrompt  –  Access  zapyta  o  zachowanie  wszystkich  nie 
zachowanych obiektów. acQuitSaveAll – zachowuje wszystkie nie 
zachowane  obiekty  bez  zadawania  pytań.  AcQuitSaveNone  – 
kończy pracę bez zachowywania zmian w obiektach. 

Obiekt Aplikacja - właściwości 

CurrentObjectName 

Zwraca nazwę aktywnego obiektu 

CurrentObjectType 

Zwraca typ aktywnego obiektu (np. acTable, acQuery) 

MenuBar 

UmoŜliwia  ustawienie  makra  paska  menu,  który  moŜna  np. 
włączyć dla całej aplikacji, formularza czy raportu. 

Obiekt Formularz - metody 

GoToPage 

Przenosi  fokus  do  pierwszego  elementu  sterującego  na  podanej 
stronie formularza. 

Recalc 

Natychmiast  aktualizuje  wszystkie  obliczane  elementy  sterujące  na 
formularzu  

Refresh 

Natychmiast  aktualizuje  rekordy  źródła  danych  formularza,  jeśli 
inni  uŜytkownicy  lub  sam  uŜytkownik  wprowadzał  do  tabel  jakieś 
zmiany. (Patrz Requery) 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

19 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Repaint 

Wymusza natychmiastową aktualizację ekranu (wraz ze wszystkimi 
przeliczeniami  elementów  sterujących).  Przydatne  jeśli  Access 
czeka z odświeŜeniem ekranu na wykonanie jakichś operacji. 

Requery 

OdświeŜa dane źródłowe formularza. Metoda ta róŜni się od metody 
Refresh  tym  Ŝe  metoda  Refresh  nie  pokazuje  zmian  w  aktualnym 
zestawie  rekordów  spowodowanych  usunięciem  lub  dodaniem 
rekordów,  a  tylko  zmianami  wykonanymi  na  rekordach  bieŜącego 
zestawu.  Metoda  Requery  odświeŜa  zestaw  rekordów  pokazując 
rekordy dodane i usuwając z zestawu rekordy usunięte. 

SetFocus 

Przenosi fokus do podanego formularza lub elementu sterującego. 

PoniewaŜ obiekt typu formularz ma około 100 właściwości wymienimy tutaj tylko kilka tych, 
które będą uŜyteczne w programowaniu. 

Dirty 

Określa  czy  bieŜący  rekord  został  zmodyfikowany  od  czasu 
ostatniego zachowania. True lub False 

RecordSetClone 

Właściwość  zwraca  obiekt  RecordSet  typu  dynamicznego  zestawu 
rekordów,  reprezentujący  rekordy  będące  źródłem  formularza.  
Obiekty  typu  RecordSet  będą  omawiane  w  części  szkolenia 
poświęconej  obiektom  DAO.  Teraz  tylko  przykład  wywołania 
obiektu RecordSetClone : 
          Dim ListSet As Recordset. 
          Set ListSet = Forms![Orders].RecordsetClone 

RecordSource 

Określa  tabelę,  zapytanie  lub  instrukcję  SQL,  będącą  źródłem 
danych dla formularza. 
Wartość tej właściwości jest ciągiem znaków 

Obiekt Screen nie zawiera metod 

Obiekt Screen - właściwości 

ActiveControl 

Właściwość reprezentuje element sterujący, który ma fokus. 

Przykładowe wykorzystanie: 

Set ElSter = Screen.ActiveControl 

nazwa = ElSter.Name 

Jeśli Ŝaden element sterujący nie ma fokusu wystąpi błąd. 

ActiveForm 

Reprezentuje formularz, który ma fokus. Uwaga jak poprzednio. 

ActiveReport 

Reprezentuje  raport,  który  ma  fokus.  Uwaga  o  błędzie  jak  w 
poprzednich właściwościach 

PreviousControl 

Reprezentuje element sterujący, który jako poprzedni miał fokus . 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

20 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Obiekt Raport - metody 

Circle 

Rysuje w obiekcie typu Raport, okrąg, elipsę lub łuk. 

Line 

Rysuje linię. 

Print 

Drukuje w obiekcie typu Raport podany tekst bieŜącą czcionką. 

PSet 

Ustawia kolor wybranego punktu w raporcie 

Scale 

Definiuje  skalę  uŜytkownika  dla  obiektu  typu  Raport  (standardowa 
skala to 1/1440 cala) 

TextHeight 

Zwraca  wysokość  podanego  w  metodzie  tekstu,  przy  uŜyciu 
bieŜącej czcionki 

TextWidth 

Zwraca szerokość tekstu, przy uŜyciu bieŜącej czcionki. 

Właściwości obiektu Raport pominiemy 

Obiekt typu formant - metody 

ItemData 

Zwraca  dane  z  kolumny  związanej  dla  podanego  wiersza.  Metoda 
dotyczy tylko pól list i pól kombi 

Requery 

Aktualizuje  dane  przez  ponowne  wykonanie  kwerendy,  lub  kodu 
SQL 

SetFocus 

Przenosi fokus do podanego elementu sterującego. 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

21 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Wst

ę

p do j

ę

zyka Visual Basic. 

 

W  programie  Microsoft  Access  dla  Windows  95  (wersja  7)  język  Access  Basic,  uŜywany  w 
wersjach  1  i  2  programu  Microsoft  Access,  został  zastąpiony  przez  język  Visual  Basic  for 
Applications. Pod wieloma względami język Visual Basic jest identyczny z językiem Access 
Basic,  a  program  Microsoft  Access  automatycznie  wykonuje  większość  niezbędnych 
konwersji  kodu  podczas  konwersji  bazy  danych.  Visual  Basic  jest  zwykłym  językiem 
programowania,  którego  instrukcje  przypominają  instrukcje  znane  z  innych  języków.  Za 
pomocą  procedur  napisanych  w  tym  języku  i  podłączonych  do  właściwości  zdarzeń  moŜna 
programować  reakcje  aplikacji  na  zachodzące  w  niej  zdarzenia.  W  ostatnich  latach  Visual 
Basic stał się wspólnym językiem programowania dla aplikacji z rodziny Microsoft Office, w 
tym  Accessa,  Excela,  Worda,  PowerPointa.  Jeden  język  ułatwia  integrację  obiektów 
pomiędzy róŜnymi aplikacjami i automatyzuje obiekty ActiveX.  

Wszystkie  procedury  i  funkcje  przechowywane  są  w  modułach. Moduły mogą być tworzone 
niezaleŜnie  z  okna  bazy  danych  na  karcie  moduły.  Jednak  waŜniejszą  rolę  pełnią  moduły 
formularzy  i  raportów.  W  tych  modułach  (po  jednym  module  dla  kaŜdego  raportu  i 
formularza)  Access  przechowuje  procedury  zdarzeń  obsługujące  zdarzenia  wszystkich 
elementów sterujących danego raportu lub formularza. 

W programie Microsoft Access 97 są dwa typy modułów: moduły standardowe i moduły klas. 
W  uproszczeniu  wygląda  to  tak,  Ŝe  moduł  klasy  związany  jest  z  formularzem  lub  raportem, 
natomiast  moduł  standardowy,  zawiera  funkcje  i  procedury  ogólnodostępne,  z  kaŜdego 
innego  modułu.  ChociaŜ  nie  jest  to  objęte  programem  tego  szkolenia,  wypada  jednak 
wspomnieć Ŝe od wersji 97 programu Access moŜna tworzyć moduły klas na karcie Moduły 
w  oknie  Bazy  Danych  jako  samodzielny  moduł  zawierający  definicje  niestandardowych 
obiektów aplikacji. 

Kiedy powinno się uŜywać obsługi zdarzeń w języku Visual Basic (kiedy nie wystarczy samo 
projektowanie za pomocą makr)? 

• 

VB jest elastyczniejszy i wydajniejszy od makr a kod bardziej czytelny i szybszy. 

• 

VB posiada moŜliwość szczegółowej obsługi błędów. 

• 

VB umoŜliwia tworzenie własnych funkcji. 

• 

VB obsługuje procedury przekazujące i przyjmujące parametry. 

• 

VB umoŜliwia tworzenie nowych obiektów za pomocą kodu. 

• 

VB umoŜliwia interakcję z innymi programami systemu Windows. 

• 

VB umoŜliwia tworzenie własnych bibliotek. 

W zasadzie moŜna powiedzieć, Ŝe tworzenie powaŜniejszych aplikacji bez programowania w 
języku Visual Basic nie bardzo ma sens. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

22 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Budowa modułów 

KaŜdy moduł składa się z sekcji deklaracji, z sekcji procedur i funkcji. 

W  sekcji  deklaracji  modułu  moŜna  umieszczać  deklaracje  stałych  i  zmiennych 
obowiązujących w całym module. 

Deklaracja zmiennych wygląda następująco: 

Dim zmienna1 As typ1, zmienna2 As typ2, .... 

Deklaracja stałych wygląda następująco: 

Const stała1 = wartość1, stała2 = wartość2, itd... 

Typy  zmiennych  w  języku  Visual  Basic  róŜnią  się  nieznacznie  od  typów  deklarowanych  dla 
wartości pól tabel. PoniŜej w tabeli przedstawiamy odpowiedniki typów między Accessem a 
językiem Visual Basic: 

Odpowiedniki typów danych Access <=> Visual Basic 

 

typ pól programu Access 

typ Visual Basic 

Autonumer 

Long 

Waluta 

Currency 

Data/godzina 

Date 

Memo 

String 

Liczba (bajt) 

Byte 

Liczba (całkowita) 

Integer 

Liczba (całkowita długa) 

Long 

Liczba (pojedyncza precyzja 

Single 

Liczba (podwójna precyzja) 

Double 

Obiekt OLE 

String 

Tekst 

String 

Tak/Nie 

Boolean 

Hiperłącze 

String 

Oprócz  typów  podanych  w  tablicy,  w  języku  Visual  Basic  mogą  występować  typy 
definiowane  przez  uŜytkownika,  oraz  typ  Variant.  Zmienne  tego  typu  mogą  przechowywać 
wartości  wszystkich  pozostałych  typów  i  jednej  zmiennej  moŜna  przypisywać  w  dowolnym 
momencie daną dowolnego typu. 

Zmienne typu Variant jako jedyne mogą przyjmować wartość Empty (pusty). 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

23 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

 

Deklaracja procedury wygląda następująco: 

 

Sub Nazwa_procedury (arg1, arg2, .....) 

deklaracje zmiennych lub stałych 

..... 

instrukcje 

..... 

End Sub 

 

Deklaracja funkcji wygląda następująco (w treści funkcji musi wystąpić przyrównanie nazwy 
funkcji  jakiejś  wartości  albo  wyraŜeniu  -  w  przykładzie  podkreślone  -  jest  to  miejsce  w 
którym funkcja uzyskuje wartość) 

 

Function Nazwa_funkcji (argument1, argument2, ...) As zwracany_typ_danych 

deklaracje zmiennych lub stałych 

.... 

.... 

instrukcje 

Nazwa_funkcji = wyraŜenie 

... 

End Function 

 

UWAGA: Argumenty funkcji i procedur, deklarowane w nagłówku domyślnie przekazywane 
są  przez  zmienną.  Jeśli  chcemy  przekazywać  je  przez  wartość  naleŜy  argument  poprzedzić 
zwrotem ByVal. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

24 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Podstawowe instrukcje i funkcje j

ę

zyka Visual Basic 

Instrukcje 

Do uŜyteczniejszych instrukcji strukturalnych naleŜą: 

Select Case: 

Składnia  

Select Case wyraŜenie tekstowe lub liczbowe 

Case wartość lub wyraŜenie1 

 

instrukcje 

Case wartość lub wyraŜenie2 

 

instrukcje 

Case wartość lub wyraŜenie3 

 

instrukcje 

Case Else 

 

instrukcje 

End Select 

Jeśli  wyraŜenie  ma  wartość  jedną  z  podanych  w  instrukcjach  Case  to  wykonywane  są 
instrukcje od tej instrukcji Case do następnej. Jeśli Ŝadna z podanych wartości nie odpowiada 
wartości wyraŜenia to wykonywane są instrukcje po słowie Case Else 

If 

Składnia 

If wyraŜenie Then 

 

instrukcje1 

Else 

 

instrukcje2 

End If 

Jeśli wyraŜenie jest prawdziwe to wykonywana jest pierwsza grupa instrukcji, jeśli wyraŜenie 
jest fałszywe to druga grupa instrukcji. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

25 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

P

ę

tla For 

Składnia  

For licznik = wartość_początkowa To wartość_końcowa 

.... 

instrukcje 

..... 

Next 

Instrukcje  znajdujące  się  w  pętli  wykonywane  są  do  czasu  aŜ  licznik  osiągnie  wartość 
końcową. 

 

P

ę

tla Do ... Loop 

Składnia 1 

Do 

... 

instrukcje 

... 

Loop Until warunek 

Instrukcje w tej pętli wykonywane są tak długo, jak długo warunek nie jest spełniony. W tej 
składni wykonywane są przynajmniej jeden raz niezaleŜnie od warunku. 

Składnia 2 

Do Until warunek 

... 

instrukcje 

... 

Loop 

Instrukcje w tej pętli wykonywane są tak długo, jak długo warunek nie jest spełniony. Jednak 
jeśli  warunek  jest  spełniony  przy  wchodzeniu  do  pętli  to  instrukcje  nie  będą  wykonane  ani 
razu. 

Są jeszcze dwie składnie pętli Do...Loop, w których pętla działa tak długo jak długo warunek 
jest spełniony. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

26 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Funkcje 

Oprócz  instrukcji  w  kodzie  języka  Visual  Basic  mogą wystąpić wywołania funkcji. Mogą to 
być  funkcje  własne  uŜytkownika,  przechowywane  w  modułach  globalnych  lub  bibliotekach 
(zagadnienie  tworzenia  bibliotek  nie  jest  objęte  programem  szkolenia),  oraz  funkcje 
wbudowane.  

Język  Visual  Basic  dostarcza  uŜytkownikowi  ponad  100  róŜnego  rodzaju  funkcji. 
Szczegółowy  opis  wszystkich  funkcji  znajduje  się  w  dokumentacji  programu,  w  tym 
materiale szkoleniowym podamy tylko listę wybranych funkcji z podziałem na kategorie. 

Sterowanie programem 

Opis 

Funkcja lub instrukcja 

Tworzenie pętli 

Do...Loop, Exit Do, Exit For, For...Next, On...GoTo 

Wyjście z programu lub 
zatrzymanie programu 

End, Stop 

Obsługa błędów 

On Error, Resume, Resume Next 

Podejmowanie decyzji 

Choose, If...Then...Else, If Then, Select Case 

Konwersja 

Opis 

Funkcja lub instrukcja 

Zamiana  wartości  ANSI  na  ciąg 
znaków 

Chr 

Ciąg znaków na wartość ANSI 

Asc 

Liczba na ciąg znaków 

Format, Str 

Ciąg znaków na liczbę 

Val 

Zmiana  jednego  typu  liczbowego 
na inny 

Cbool,  Cbyte,  CCur,  Cdate,  CDbl,  CDec,  CInt,  CLng, 
CSng, CStr, CVar, 

Zamiana  liczb  dziesiętnych  na  inny 
format 

Hex, Oct 

Zamiana daty na liczbę 

Day, Month, Weekday, Year 

Zamiana czasu na liczbę 

Hour, Minute, Now, Second 

Zamiana  serii  liczb  na  datę  lub 
godzinę 

DateSerial, TimeSerial 

Zamiana  ciągu  znaków  na  datę  lub 
godzinę 

DataValue, TimeValue 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

27 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Data/Godzina 

 

Opis 

Funkcja lub instrukcja 

BieŜąca data lub godzina 

Date, Now, Time 

Ustawienie daty lub godziny 

Date, Time 

Działania na datach 

DateAdd, DateDiff, DatePart 

Funkcje domeny 

Opis 

Funkcja lub instrukcja 

Funkcje agregujące 

DAvg, DCount, DFirst, DLast, DMin, DMax, DStDev, 
DStDevP, Dsum, DVar, DvarP 

Wyszukiwanie wartości w domenie 

Dlookup 

Funkcje - Dynamic Data Exchange (DDE) 

Opis 

Funkcja lub instrukcja 

UŜycie języka Visual Basic jako klienta DDE 

DDEExecute, DDEInitiate 

Wysłanie danych z Visual Basica do serwera DDE  DDEPoke, DDESend 

UŜycie VB do pobrania danych z serwera DDE 

DDE, DDERequest 

Zakończenie wymiany DDE 

DDETerminate, DDETerminateAll 

Obsługa błędów 

 

Opis 

Funkcja lub instrukcja 

Przechwycenie  błędu  podczas  wykonywania 
procedury 

On Error, Resume 

Dane o statusie błędu 

Err, Erl 

Komunikat o błędzie 

Funkcja Error 

Symulacja błędu w czasie wykonania 

Instrukcja Error 

Funkcje Wejścia /Wyjścia (I/O) 

 

Opis 

Funkcja lub procedura 

Utworzenie lub otwarcie pliku 

Open 

Zamknięcie pliku 

Close, Reset 

Zapis do pliku 

Print #, Put, Write # 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

28 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Sterowanie formatem danych 
wyjściowych 

Spc, Tab, Width # 

Czytanie z pliku 

Get, Input, Input #, Line Input # 

Pobranie informacji o pliku 

EOF, FileAttr, FreeFile, Loc, LOF, Seek 

Ustawienie lub określenie pozycji 
w pliku dla operacji typu 
odczyt/zapis 

Seek 

Zarządzanie napędami 
dyskowymi i katalogami 

ChDir, ChDrive, CurDir, MkDir, RmDir 

Zarządzanie plikami 

Dir, Kill, Lock, Unlock, Name 

Finansowe 

 

Opis 

Funkcja 

Obliczenia finansowe 

DDB,  FV,  IPmt,  IRR,  MIRR,  NPer,  NPV,  Pmt,  PPmt, 
PV, Rate, SLN, SYD 

Sprawdzanie zmiennych 

Opis 

Funkcja 

Sprawdzenie czy zmienna jest datą 

IsDate 

Sprawdzenie czy zmienna jest pusta 

IsEmpty 

Sprawdzenie czy zmienna jest równa Null 

IsNull 

Sprawdzenie czy zmienna jest liczbą 

IsNumeric 

Określenie  typu  danej  przypisanej  bieŜąco 
zmiennej typu Variant 

VarType 

Matematyczne 

Opis 

Funkcja 

Funkcje ogólne 

Exp, Log, Sqr 

Funkcje trygonometryczne 

Atn, Cos, Sin, Tan, Derived Math Functions 

Część całkowita liczby 

Nit, Ix 

Wartość bezwzględna liczby 

Bas 

Znak liczby 

Sygn. 

Generowanie liczb pseudolosowych 

Randomize, Rnd 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

29 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ŝne 

Opis 

Funkcja 

Uruchomienie innej aplikacji 

AppActivate, Shell 

Wyświetlenie okna dialogu 

InputBox, MsgBox 

Symulacja klawiatury 

SendKeys 

Pobranie argumentów z linii poleceń 

Command 

Wyszukiwanie zmiennych środowiskowych 

Environ 

Nazwa bieŜącego uŜytkownika 

CurrentUser 

Dźwięk z głośniczka 

Beep 

Wykonanie akcji Microsoft Access 

DoCmd 

SQL 

Opis 

Funkcja 

Funkcje agregujące SQL 

Avg, Count, First, Last, Min, Max, StDev, StDevP, Sum, Var 

Ciągi znaków 

Opis 

Funkcja 

Formatowanie ciągu znaków 

Format 

Wartości ANSI 

Asc, Chr 

Operacje na ciągach znaków 

InStr, Left, LTrim, Mid, Right, RTrim, Trim 

Zmiana liter z duŜych na małe i odwrotnie  LCase, Ucase 

Wyrównane ciągu znaków 

LSet, Rset 

Długość ciągu znaków 

Len 

Porównywanie dwóch ciągów znaków 

StrComp 

Deklaracja sposobu porównywania ciągów 
znaków 

Option Compare 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

30 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Oprócz  instrukcji  w  kodzie  procedur  i  funkcji  mogą  wystąpić  wywołania  obiektów,  ich 
właściwości  i  metod  w  opisany  poprzednio  sposób,  oraz  funkcje  i  procedury  utworzone  w 
modułach lub funkcje i procedury wbudowane (lista znajduje się w generatorze). 

ZALECENIA DO ĆWICZEŃ 

Korzystanie  z  języka  Visual  Basic  rozpoczniemy  od  utworzenia  nowego  modułu  o  nazwie 
FUNKCJE  i  utworzenie  w  tym  module  funkcji  o  nazwie  Zaladowany(nazwaFormularza)
Funkcja  b
ędzie  sprawdzała  czy  formularz  o  nazwie  podanej  jako  argument  funkcji  jest 
otwarty. Je
śli jest zwracana będzie przez funkcję wartość True, jeśli nie jest otwarty to False. 

Do ćwiczeń naleŜy otworzyć plik o nazwie Muzyka97_2.mdb

Ć

WICZENIE 8 

1.  Proszę utworzyć nowy moduł o nazwie FUNKCJE i utworzyć w tym module nową funkcję o 

nazwie ZALADOWANY. Treść funkcji zamieszczona została poniŜej. 

2.  Funkcja działa w sposób następujący: 

• 

Deklarowana jest zmienna  typu Integer 

• 

Następuje nadanie funkcji wartości False 

• 

W  pętli  następuje  przeglądanie  kolejnych  formularzy  z  kolekcji  otwartych 

formularzy i następuje sprawdzenie czy właściwość Formname formularza jest równa 
nazwie  szukanego  formularza  przekazanej  jako  argument.  Je
śli  nazwa  odpowiada 
szukanej  nazwie  nast
ępuje  przypisanie  funkcji  wartości  True  i  zakończenie 
wykonywania. 

• 

Jako  wartość  końcowa  występuje  wartość  właściwości  Count  kolekcji  Forms. 

Właściwość Count kolekcji podaje liczbę obiektów znajdujących się w kolekcji. 

3.  Oto Kod funkcji: 

Public Function zaladowany(MojFormularz As String) As Boolean 

 Dim i As Integer 

 zaladowany = False 

 For i = 0 To Forms.Count - 1 

    If Forms(i).FormName = MojFormularz Then 

       zaladowany = True 

       Exit Function 

    End If 

 Next 

End Function 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

31 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Do następnego ćwiczenia potrzebna będzie znajomość funkcji MsgBox i obiektu DoCmd

Obiekt DoCmd słuŜy do wykonywania w języku Visual Basic akcji, które moŜna wykonać za 
pomocą makr. Lista akcji podana została w części poświęconej makrom. Proszę pamiętać, Ŝe 
naleŜy podawać angielskie nazwy akcji.  

Składnia: 

DoCmd.NazwaAkcji  argument1, argument2, ..... 

Funkcja MsgBox wyświetla okno komunikatu z określonymi przyciskami i zwraca wartość w 
zaleŜności od wybranego przycisku. 

Składnia 

MsgBox(„komunikat”, typ , tytuł) 

komunikat - ciąg znaków lub zmienna znakowa wyświetlana w oknie dialogowym. 

typ - suma wartości numerycznych określających postać okna komunikatu 

 

Wartość 

Odpowiednik VB 

Znaczenie 

Ilość i rodzaje przycisków 

VbOKOnly 

Tylko przycisk OK. 

VbOKCancel  

Przyciski OK i Cancel. 

VbAbortRetryIgnore 

Przyciski Abort, Retry i Ignore. 

VbYesNoCancel 

Przyciski Yes, No, i Cancel buttons. 

VbYesNo 

Przyciski Yes i No. 

VbRetryCancel 

Przyciski Retry i Cancel. 

Typ ikony 

VbApplicationModal 

Brak ikony. Okno modalne dla aplikacji 

16 

VbCritical 

Ikona STOP - komunikat krytyczny. 

32 

VbQuestion 

OstrzeŜenie ze znakiem zapytania. 

48 

VbExclamation 

OstrzeŜenie z wykrzyknikiem. 

64 

VbInformation 

Informacja. 

Przycisk domyślny 

VbDefaultButton1 

Pierwszy przycisk jako domyślny. 

256 

VbDefaultButton2 

Drugi przycisk jako domyślny. 

512 

vbDefaultButton3 

Trzeci przycisk jako domyślny. 

768 

vbDefaultButton4 

Czwarty przycisk jako domyślny. 

tytuł - ciąg znaków lub zmienna znakowa, która będzie tytułem okna. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

32 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Funkcja MsgBox zwraca jedną z następujących wartości: 

Wartość 

Odpowiedniki VB 

Znaczenie 

VbOK 

Naciśnięto przycisk OK. 

VbCancel 

Naciśnięto przycisk Cancel 

VbAbort 

Naciśnięto przycisk Abort 

VbRetry 

Naciśnięto przycisk Retry 

VbIgnore 

Naciśnięto przycisk Ignore 

VbYes 

Naciśnięto przycisk Yes 

VbNo 

Naciśnięto przycisk No 

Ć

WICZENIE 9 

Proszę  zaprogramować  działanie  przycisków  grupy  opcji  z  formularza  PANEL.  Zadaniem 
pierwszych trzech przycisków b
ędzie zmiana etykiety znajdującej się nad polem listy poleceń 
oraz  zmiana  
źródła  wiersza  dla  pola  listy  poleceń  na  odpowiednie  zapytanie.  Czwarty 
przycisk ma zamyka
ć formularz. Przed zamknięciem formularza wyświetlany jest komunikat z 
pro
śbą o potwierdzenie zamknięcia formularza. Aby wykonać to ćwiczenie naleŜy:  

1.  Wyświetlić formularz PANEL w widoku projekt 

2.  Zaznaczyć grupę opcji „Wybor” (klikając ramkę grupy) i dla właściwości zdarzenia „przy 

kliknięciu” wybrać Procedura zdarzenia i uruchomić Konstruktor kodu(...) 

3.  Następnie naleŜy wpisać poniŜszy kod: 

Sub Wybor_Click () 

Dim odp As Integer 

    Select Case Me![Wybor] 

           Case 1 

            Me![etykietka_polecen].Caption = "Katalog" 

            Me![Lista_polecen].RowSource = "Katalog" 

           Case 2 

            Me![etykietka_polecen].Caption = "Wydruki" 

            Me![Lista_polecen].RowSource = "Wydruki" 

           Case 3 

            Me![etykietka_polecen].Caption = "Klienci" 

            Me![Lista_polecen].RowSource = "Klienci" 

           Case 4 

            odp = MsgBox("czy zamknąć panel sterowania", 4 + 32 + 256, "Pytanie") 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

33 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

UWAGA  :PowyŜszą  linijkę  moŜna  teŜ  zapisać  wykorzystując  liczby  prezentowane  w 
powy
Ŝszych tabelach 

odp = MsgBox("czy zamknąć panel sterowania", vbYesNo + vbQuestion +  

vbDefaultButton2, "Pytanie")  

 

               If odp = 6 Then      ‘ lub  If odp= vbYes Then 

                 DoCmd.Close acForm, „PANEL” 

                 DoCmd.SelectObject acTable,  True 

               Else 

                 Me![Wybor] = 1 

                 Me![etykietka_polecen].Caption = "Katalog" 

                 Me![Lista_polecen].RowSource = "Katalog" 

               End If 

    End Select 

End Sub 

4.  Po  wykonaniu  tego  ćwiczenia  proszę  otworzyć  formularz  PANEL  i  sprawdzić  czy  działa 

poprawnie. Co dzieje się po otwarciu panelu, czy tak powinien się zachowywać

Ć

WICZENIE 10 

Aby  poprawić  działanie  PANELU  proszę  ustawić  właściwość  "Tytuł"  formantu 
"etykietka_polecen" oraz wła
ściwość śródłoWiersza formantu "Lista_polecen"  

Ć

WICZENIE 11 

1.  NaleŜy  zaprogramować  reakcję  pola  listy  (pole  z  nazwami  poleceń)  na  dwukrotne 

kliknięcie,  w  taki  sposób,  aby  po  dwukrotnym  kliknięciu  pola  listy  wykonywane  było 
odpowiednie polecenie. 

2.  W  polu  listy  wyświetlane  są  polecenia  z  tabeli  MENU.  Oprócz  poleceń  wyświetlane  są 

takŜe  odpowiadające  poleceniom  numery  (w  kolumnie  o  zerowej  szerokości).  Jest  to 
kolumna  zwi
ązana,  w  związku  z  czym  do programu przekazywany jest z pola listy, numer 
polecenia.  

3.  Procedura powinna sprawdzać czy na liście są polecenia. Jeśli nie ma poleceń to lista po 

dwukrotnym kliknięciu przekazuje wartość Null. 

• 

w  pierwszej  instrukcji  będziemy sprawdzać czy wartość przekazywana przez pole wynosi 
Null.  Jeśli  tak  będzie  to  kończymy  wykonywanie  procedury  po  wyświetleniu 
odpowiedniego komunikatu. 

• 

Jeśli  jest  to  wartość  róŜna  od  Null  to  instrukcją  Select  Case  w  zaleŜności  od  numeru 
polecenia wykonujemy odpowiednią akcję. 

4.  Proszę przeanalizować, wpisać i uruchomić poniŜszą procedurę

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

34 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Sub lista_polecen_DblClick(Cancel As Integer) 

    If IsNull([lista_polecen]) Then 

       MsgBox ("Nie wybrano Ŝadnego polecenia") 

       Exit Sub 

    End If 

    Select Case [lista_polecen] 

           Case 101 

             DoCmd.OpenForm "Plyty", , , , acAdd 

           Case 102 

             DoCmd.OpenForm "Plyty", , , , acEdit 

           Case 106 

             DoCmd.OpenForm "Wykonawca", , , , acFormReadOnly 

           Case 107 

             DoCmd.OpenQuery "Lista_plyt" 

           Case Else 

             MsgBox "Tego jeszcze nie obsługujemy" 

    End Select 

End Sub 

Ć

WICZENIE 12 

NaleŜy zaprogramować reakcję przycisku zamykającego aplikację  

1.  Jedyną  nową  akcją  będzie  tutaj  akcja  Quit  z  argumentem  acQuitPrompt,  wywoływana 

przez instrukcję DoCmd i zamykająca aplikację.  

2.  Proszę wpisać poniŜszą procedurę

Sub koniec_Click() 
    Dim rezultat As Integer 
    Const komunikat = "Czy chcesz zako
ńczyć aplikację ??" 
    Const typ_okna = 4 + 16 + 256 
    Const tytul = " pytanie ostrzegawcze" 
    rezultat = MsgBox(komunikat, typ_okna, tytul) 
    If rezultat = 6 Then 
       DoCmd.Quit acQuitPrompt 
    Else 
        Me![Wybor] = 1 
        Me![etykietka_polecen].Caption = "Katalog" 
        Me![lista_polecen].RowSource = "Katalog" 
    End If 
End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

35 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

W  dalszej  części  ćwiczeń  zaprogramujemy  synchronizację  dwóch  formularzy.  W  pliku 
muzyka97_3.mdb  (który  naleŜy  otworzyć)  znajdują  się  dwa  nowe  formularze:  formularz 
LISTA_PLYT i formularz TYTULY_NAGRAN. 

 

Rys. 4 Okno dialogowe Formularz: LISTA_PLYT 

Formularz LISTA_PLYT składa się z pięciu elementów sterujących: 

1.  Z  pola  kombi,  w  którym  wyświetlane  są  nazwy  kategorii  muzycznych.  Źródłem 

wiersza dla tego pola jest tabela KATEGORIE_MUZYCZNE. 

2.  Pola listy. Pole to początkowo wyświetla listę wszystkich płyt, które znajdują się w 

katalogu. Docelowo ma wyświetlać tylko płyty wybranej kategorii muzycznej. 

3.  Przycisku Zamknij formularz ,którego zadaniem jest zamknięcie formularza. 

4.  Przycisku  WypoŜycz  -  przycisk  ten  jest  widoczny  tylko  wtedy  jeśli  formularz 

wyświetlany jest z formularza WYPOZYCZALNIA i słuŜy wtedy do rejestrowania 
wypoŜyczenia  płyty.  (W  tej  części  ćwiczeń  nie  zajmujemy  się  tym  przyciskiem  - 
standardowo  nie  jest  on  wyświetlany.  Oprogramowanie  wypoŜyczalni  będzie 
tematem późniejszych ćwiczeń.) 

5.  Przycisku  Tytuły  nagrań  -  podstawowym  zadaniem  tego  przycisku  jest 

wyświetlenie tytułów nagrań z wybranej płyty. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

36 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Formularz TYTUŁY NAGRAŃ składa się z czterech formantów:  

1.  Pola  listy,  w  którym  będą  wyświetlane  tytuły  nagrań  na  płycie  zaznaczonej  w 

formularzu LISTA_PLYT. 

2.  Przycisku Zamknij 

3.  Pól  tekstowych  Wykonawca  i  tytuł  płyty,  w  których  maja  być  wyświetlone 

odpowiednio nazwa wykonawcy i tytuł płyty. 

Celem  pierwszej  grupy  ćwiczeń  będzie  zsynchronizowanie  działania  obu  pól  na  formularzu 
LISTA_PLYT  w  taki  sposób  aby  po  wybraniu  nowej  kategorii,  w  polu  listy  pojawiały  się 
tytuły  płyt  tylko  z  wybranej  kategorii.  Druga  grupa  ćwiczeń  ma  doprowadzić  do 
zsynchronizowania działania formularzy LISTA_PLYT i TYTULY_NAGRAN aby: 

• 

Po  kliknięciu  przycisku  Tytuły  nagrań  wyświetlany  był  formularz  z  listą  nagrań 
wybranej płyty. 

• 

Jeśli wyświetlone są obydwa formularze to kliknięcie dowolnego tytułu płyty 
automatycznie aktualizuje nagrania z tej płyty. Podobnie działa zmiana kategorii. 

• 

Jeśli  otwarte  są  oba  formularze  to  zamknięcie  formularza  LISTA_PLYT 
automatycznie zamyka formularz TYTULY NAGRAN. 

Ć

WICZENIE 13 

Proszę  zmodyfikować  właściwość  źródło  wiersza  pola  listy  lista  tytułów  aby  rekordy 
wy
świetlane  w  tym  polu  były  wybierane  zgodnie  z  wartością  przekazywaną  przez  pole  lista 
kategorii

1.  Wyświetl arkusz właściwości pola listy Lista tytułów 

2.  Kliknij w polu właściwości Źródło wiersza 

3.  Uruchom konstruktor i po wyświetleniu siatki projektowania zapytania, w wierszu Kryteria 

w kolumnie Numer kategorii wstaw jako kryterium wartość pola lista kategorii

 

[Formularze]![Lista_plyt]![lista_kategorii] 

4.  Zamknij  okno  projektowania  zapytania  i  odpowiedz  twierdząco  na  pytanie  o  to,  czy 

aktualizować właściwość

Ć

WICZENIE 14 

Efekt  jaki  został  uzyskany  w  poprzednim  ćwiczeniu  to  wyczyszczenie  pola  listy  tytułów. 
Pytanie: Co trzeba jeszcze zrobi
ć aby po zmianie w polu lista_kategorii, w polu lista_tytulow 
automatycznie wy
świetlane były tytuły z danej kategorii? 

1.  NaleŜy  za  pomocą  procedury  zdarzenia  obsłuŜyć  zdarzenie  „po  aktualizacji”  dla  pola 

Lista_kategorii.. Proszę utworzyć poniŜszą procedurę.  

Sub lista_kategorii_AfterUpdate() 

    Me!lista_tytulow.Requery 

End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

37 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

 ĆWICZENIE 15 

Następnym  etapem  tworzenia  aplikacji  będzie  wyświetlanie  za  pomocą  przycisku  Tytuły 
nagra
ń  z  formularza  LISTA_PLYT  formularza  TYTULY_NAGRAN  z  nagraniami  z 
zaznaczonej płyty (najpierw jednak sprawdzimy, czy wybrano jak
ąś płytę

1.  Proszę wpisać następującą procedurę

Sub tytuly_nagran_Click() 

    If IsNull(Me!lista_tytulow) Then 

      MsgBox "wybierz jakas płytę

      Exit Sub 

    Else 

      DoCmd.OpenForm "tytuly_nagran" 

    End If 

End Sub 

Ć

WICZENIE 16 

Jak  łatwo  zauwaŜyć,  synchronizacja nie jest doskonała. Po wyświetleniu formularza, w polu 
listy nie wy
świetlane są Ŝadne nagrania.  

1.  Za pomocą metody, którą wykorzystaliśmy poprzednio do filtrowania listy tytułów, proszę 

stworzyć  i  przefiltrować  listę  nagrań  w  taki  sposób  aby  na  liście  pojawiały  się  tylko 
nagrania z płyty zaznaczonej w poprzednim formularzu. 

2.  NaleŜy stworzyć źródło rekordów pola listy Tytuly_nagran w oparciu o tabelę Nagrania i 

ustawić kryterium w kolumnie „nr_plyty”. Proszę uzupełnić źródło wierszy w widoku SQL 
kwerendy poni
Ŝszym kodem: 

SELECT Nagrania.Nr_nagrania, Nagrania.Tytul_nagrania, Nagrania.Czas_nagrania, 

Nagrania.Nr_plyty FROM Nagrania 

WHERE Nagrania.Nr_plyty = [Formularze]![Lista_plyt]![lista_tytulow] 

3. Sprawdź czy formularz TYTULY NAGRAN jest podręczny? 

Ć

WICZENIE 17 

1.  Co zrobić aby po kliknięciu innej płyty na formularzu LISTA_TYTULOW lista nagrań była 

automatycznie  aktualizowana?  NaleŜy  sprawdzić  funkcją  Zaladowany(tytuly_nagran) czy 
formularz TYTULY_NAGRAN jest otwarty.  

• 

Jeśli nie jest, nie powinna być wykonywana Ŝadna akcja. 

• 

Jeśli  jest  otwarty  to  po  kliknięciu  innej  płyty,  lista  nagrań  na  formularzu 
TYTULY_NAGRAN  powinna  by
ć  zaktualizowana,  czyli  powinniśmy  ponowić  zapytanie 
pola listy. 

2.  Wpisz następującą procedurę

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

38 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Sub lista_tytulow_AfterUpdate() 

    If zaladowany("tytuly_nagran") Then 

        Forms![tytuly_nagran]![lista_nagran].Requery 

    End If 

End Sub 

Ć

WICZENIE 18 

1.  Pytanie: Dlaczego po otwarciu formularza TYTULY_NAGRAN bezpośrednio z okna bazy 

danych wyświetlana jest prośba o podanie parametru i czy jest to błąd? 

2.  Zaprogramuj  działanie  przycisków  zamykających  oba  formularze.  W  obu  przypadkach 

moŜna wpisać taką samą procedurę powodującą zamknięcie aktywnego formularza: 

Sub Zamknij_Click() 

    DoCmd.Close 

End Sub 

3.  Dla formularza TYTULY_NAGRAN moŜna dopisać linijkę zmieniającą napis na przycisku  

Sub Zamknij_Click() 

    DoCmd.Close 

    Forms!Lista_plyt!tytuly_nagran.Caption = "tytuły nagrań

End Sub 

Ć

WICZENIE 19 

Co zrobić aby po zamknięciu formularza LISTA_PLYT zamykany był równocześnie formularz 
TYTULY_NAGRAN je
śli jest otwarty? 

1.  Wpisz następującą procedurę

Sub Form_Close() 

    If zaladowany("TYTULY_NAGRAN") Then 

        DoCmd.Close acForm, "TYTULY_NAGRAN" 

    End If 

End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

39 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 20 

Proszę zmienić działanie procedury po aktualizacji listy kategorii na formularzu LISTA_PLYT 
w  taki  sposób  aby  po  wybraniu  nowej  kategorii  i  bezpo
średnim  naciśnięciu  guzika  tytuły 
nagra
ń nie pokazywały się Ŝadne nagrania – przecieŜ Ŝadnego nie wybraliśmy. 

UWAGA:  Pola  kombi  i  pola  listy  pamiętają  ostatnio  wybrane  wartości  aŜ  do  momentu 
wyboru innej pozycji z listy, zamknięcia formularza lub sztucznego „wyzerowania” pola listy. 
Po  wyzerowaniu  pole  takie  będzie  się  zachowywało,  jakby  było  puste  (jakby  nigdy  nic  nie 
wybierano). 

Zmodyfikuj  następującą  procedurę  dla  pola  Lista_kategorii  w  formularzu  LISTA_PLYT 
(procedura była utworzona wcze
śniej). 

Sub lista_kategorii_AfterUpdate() 

    Me!lista_tytulow.Requery 

    Me!lista_tytulow = Null 

End Sub 

Ć

WICZENIE 21 

Jeśli w polu listy z tytułami płyt nie jest zaznaczona Ŝadna płyta to kliknięcie przycisku Tytuły 
nagra
ń  nie  spowoduje  otwarcia  formularza  TYTULY_NAGRAN.  Co  zrobić  aby  przycisk  ten 
działał na dwa sposoby jednak je
śli jest wybrana jakaś płyta: 

Sposób  pierwszy  jeśli  jest  otwarty  formularz  TYTULY_NAGRAN  to  go  zamkniemy.  Sposób 
drugi  je
śli  formularz  nie  jest  otwarty  to  go  otworzymy  i  zmienimy  napis  na  przycisku  na 
gotowy  do  obsługi  przycisku  ze  sposobu  pierwszego:  Zmodyfikuj  nast
ępującą  procedurę 
(procedura jest ju
Ŝ wpisana) 

Sub tytuly_nagran_Click() 

    If IsNull(Me!lista_tytulow) Then 

      MsgBox "wybierz jakąś płytę

      Exit Sub 

    End If 

If zaladowany("TYTULY_NAGRAN") Then 

        Me![tytuly_nagran].Caption = "tytuły nagrań " 

        DoCmd.Close acForm, "TYTULY_NAGRAN" 

    Else 

        DoCmd.OpenForm "TYTULY_NAGRAN" 

        Me![tytuly_nagran].Caption = "ukryj tytuły" 

    End If 

End Sub 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

40 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Ć

WICZENIE 22 

Proszę  podłączyć  formularz  LISTA_PLYT    do  formularza  PANEL  do  polecenia 
przeszukiwanie katalogu i sprawdzi
ć jego działanie. 

UWAGA:  Jako  samodzielne  ćwiczenie  proszę  do  procedury  zdarzenia  po  aktualizacji dodać 
dwa  polecenia:  przenosz
ące  fokus  i  akcję  symulującą  naciśnięcie  klawisza  "strzałki  w  dół" 
(albo enter). 

 

Następnym etapem szkolenia będzie zainstalowanie formularza rejestrującego wypoŜyczanie i 
zwroty płyt. W tym celu proszę wczytać plik o nazwie muzyka97_4.mdb. 

W pliku znajdują się dodatkowe obiekty: 

1. Tabela KLIENCI_LISTA o polach: nr_klienta, imie, nazwisko, miasto, ulica. Zadaniem 
tabeli będzie przechowywanie informacji o klientach. 

2.  Tabelę  PLYTY  proszę  uzupełnić  o  dodatkowe  pole  nr_klienta:  typu  liczba  całkowita 
długa.  W  polu  tym  będziemy  rejestrować  fakt  wypoŜyczenia  płyty  przez  klienta.  Po 
wypoŜyczeniu  klientowi  płyty,  numer  klienta  będzie  wpisywany  do  tego  pola.  Po  oddaniu 
płyty zawartość pola będzie czyszczona (usuwany będzie numer klienta). 

3. Proszę utworzyć dodatkową relację między tabelami PLYTY i KLIENCI_LISTA: 

 

Rys. 5 Relacje pomiędzy tabelami 

4.  Pojawił  się  równieŜ  nowy  formularz  WYPOZYCZALNIA,  w  którym  znajdują  się 
następujące elementy sterujące: 

• 

pole  kombi  które  będzie  słuŜyło  do  wybierania  klienta z listy zarejestrowanych w 
wypoŜyczalni klientów. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

41 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

• 

pole  listy  (wypoŜyczone  płyty)  -  w  tym  polu  będą  wyświetlane  tytuły  płyt 
wypoŜyczonych przez wybranego klienta. 

• 

przyciski poleceń:  Lista płyt, Zamknij, Zwrot płyty, Rozliczenie 

 

Rys. 6 Okno dialogowe Formularza WYPOZYCZALNIA 

Celem  ćwiczeń  z  tej  części  szkolenia  będzie  zaprogramowanie  rejestrowania  wypoŜyczeń  i 
zwrotów  płyt.  Procesy  wypoŜyczania  i  zwrotów  będą  związane  z  programowaniem  za 
pomocą obiektów dostępu do danych (DAO - Data Access Objects). 

Proces wypoŜyczania płyty przebiegać ma w następujący sposób: 

1.  Po  wybraniu  klienta  moŜna  będzie  przyciskiem  Lista  płyt  -  wypoŜyczanie 

wyświetlić  formularz  LISTA_PLYT,  którym  zajmowaliśmy  się  dotychczas. 
Wyświetlając  ten  formularz  trzeba  będzie  równocześnie  pokazać  przycisk 
WypoŜycz znajdujący się na tym formularzu. 

2.  Po wybraniu płyty z listy i kliknięciu przyciksu WypoŜycz, odpowiednia procedura 

zdarzenia  ma  znaleŜć  rekord  opisujący  zaznaczoną  płytę  w  tabeli  PLYTY, 
sprawdzić  czy  płyta  nie  jest  wypoŜyczona.  Jeśli  jest,  to  wyświetlić  komunikat  i 
zakończyć  operację,  a  jeśli  nie  jest,  to  w  polu  nr_klienta  wpisać  numer  klienta 
przekazywany przez pole kombi klientów formularza WYPOZYCZALNIA 

3.  Po  wypoŜyczeniu  płyty  lista  płyt  wypoŜyczonych  przez  klienta  powinna  zostać 

odnowiona. 

Zwrot płyty przebiega w podobny sposób: 

1.  Po 

zaznaczeniu 

płyty 

na 

liście 

wypoŜyczonych 

płyt 

na 

formularzu 

WYPOZYCZALNIA  i  kliknięciu  przycisku  Zwrot,  odpowiednia  procedura 
zdarzenia ma usuwać numer klienta z odpowiedniego rekordu w tabeli płyty. 

2.  Po wykonaniu tej operacji powinna być odświeŜona lista płyt wypoŜyczonych. 

Pierwszym  ćwiczeniem  będzie  synchronizacja  zawartości  pola  listy  płyt  z  polem  w  którym 
wyświetlany jest klient. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

42 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Ć

WICZENIE 23 

Najpierw  naleŜy  uzupełnić  kwerendę  LISTA_PLYT  o  nowo  dodane  pole  nr_klienta  z  tabeli 
PLYTY.  Po  dodaniu  pola  kwerend
ę  naleŜy  zachować.  Kolejnym  krokiem  będzie  stworzenie 
ź

ródła wiersza dla pola l_wyp_plyt na formularzu WYPOYCZALNIA. Pole to ma pokazywać 

tytuły i nazwy wykonawców wypoŜyczonych przez klienta płyt. Proponuję stworzyć za pomocą 
kreatora  (trzy  kropki  obok  wła
ściwości  źródło  wiersza)  procedurę  SELECT  języka  SQL 
opart
ą na poprzednio zmodyfikowanej kwerendzie LISTA_PLYT: 

SELECT Lista.Numer_plyty, Lista.Tytul_plyty, Lista.Nazwa_Wykonawcy, 

              Lista.Nr_klienta 

FROM Lista_plyt as lista 

WHERE Lista.Nr_klienta = [Forms]![wypozyczalnia]![klient] 

NaleŜy wpisać procedurę, która będzie synchronizowała zawartości pola kombi z zawartością 
pola listy. Metod
ę REQUERY moŜna tutaj uŜyć na kilka sposobów – proszę wybrać jeden. 

Sub klient_AfterUpdate() 

    Me![l_wyp_plyt].Requery                ‘ sposób pierwszy dla Requery 

    DoCmd.Requery (l_wyp_plyt)          ‘ sposób drugi 

    DoCmd.Requery "l_wyp_plyt"          ‘ sposób trzeci 

    Me![l_wyp_plyt] = Null                     ‘ a tu znany juŜ sposób zerowania pola 

End Sub 

Ć

WICZENIE 24 

Proszę  do  przycisku  Lista  płyt  -  wypoŜyczanie  podłączyć  formularz  LISTA_PLYT  w  taki 
sposób  aby  w  przypadku  gdy  nie  został  wybrany  
Ŝaden  klient,  zamiast  akcji  pojawiał  się 
komunikat o konieczno
ści wybrania klienta z listy. 

1.  Wpisz następującą procedurę

 

Sub wypoz_Click() 

    If IsNull(Me!klient) Then 

        MsgBox "najpierw wybierz klienta" 

        Exit Sub 

    Else 

        DoCmd.OpenForm "lista_plyt" 

End If 

End Sub  

 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

43 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 25 

Proszę samodzielnie do przycisku WypoŜyczalnia na formularzu PANEL podłączyć formularz 
WYPOZYCZALNIA. Przycisk ten ma jednocze
śnie zamykać formularz PANEL 

Ć

WICZENIE 26 

Proszę o ustawienie właściwości zdarzeń w taki sposób aby przycisk polecenia WypoŜycz na 
formularzu  LISTA_PLYT  był  wy
świetlany  tylko  wtedy,  gdy  otwarty  jest  formularz 
WYPOZYCZALNIA.  W  przeciwnym  razie  przycisk  nie  powinien  by
ć  widoczny  (tak  jak  jest 
teraz). 

1.  Wpisz następującą procedurę

Sub Form_Activate() 

    If zaladowany("wypozyczalnia") Then 

        Me![wypozycz].Visible = True 

    Else 

        Me![wypozycz].Visible = False 

    End If 

End Sub 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

44 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Programowanie za pomoc

ą

 obiektów dost

ę

pu do danych 

Access  składa  się  z  dwóch  podstawowych  części  –  aparatu  aplikacyjnego  który  nadzoruje 
programowanie  i  interfejs  uŜytkownika,  oraz  z  aparatu  bazodanowego  JET DBEngine, który 
nadzoruje  przechowywanie  danych  i  definicje  wszystkich  obiektów  w  bazie  danych.  Visual 
Basic  obsługuje  w  wersji  Accessa  97  model  obiektów  słuŜący  do  operacji  na  obiektach 
przechowywanych przez aparat bazodanowy. Model ten to DAO (Data Access Objects) 

Kiedy  baza  danych  zostaje  otwarta,  aparat  aplikacyjny  wczytuje  odpowiednie  kolekcje 
obiektów z plików bazy danych i aplikacji, aby nazwy wszystkich tabel, kwerend, formularzy, 
raportów,  makr  i  modułów  wyświetlić  w  oknie  bazy  danych.  NajwyŜszym  obiektem  w 
hierarchii  ustanawianym  przez  aparat  aplikacyjny  jest  Application,  który  zawiera  kolekcje 
Forms  wszystkich  otwartych  formularzy,  kolekcję  Reports,  kolekcję  References  i  inne 
omówione we wcześniejszej części podręcznika. 

DAO (Data Access Objects) 

Obiekt  DBEngine  słuŜy  do  pobierania  danych,  oraz  sprawdzania  lub  tworzenia  nowych 
obiektów  danych.  Jest  modelem  obiektów  dostępu  do  danych  stworzonym  specjalnie  do 
współpracy z Accessem i aparatem JET DBEngine 

DAO tworzy strukturę hierarchiczną składającą się z obiektów następującego typu: 

Aparat bazy danych Microsoft JET DBEngine 

Znajduje  się  na  szczycie  hierarchii  obiektów  dostępu  do  danych.  Zawiera  w  sobie  kolekcję 
Workspaces  (obszarów  roboczych),  Errors  (błędów),  Properties  (właściwości).  Do  metod 
obiektu naleŜą między innymi: CompactDatabase, CreateWorkspace, RepairDatabase. 

Kolekcja obszarów roboczych (workspaces) 

Kolekcja  Workspaces  (obszarów  roboczych)  składa  się  z  obiektów  typu  Workspace  (obszar 
roboczy).  W  obiekcie  Workspace  znajdują  się:  kolekcja  baz  danych  (databases)  ,  kolekcja 
uŜytkowników  (Users)  i  kolekcja  grup  (Groups).  Do  metod  obiektu  naleŜą:  BeginTrans, 
CreateGroup, Close, CreateUser, CommitTrans, OpenDatabase, CreateDatabase, Rollback. 

Kolekcja baz danych (databases) 

Kolekcja  baz  danych  (Databases)  składa  się  z  obiektów  typu  baza  danych.  Obiekt  Database 
(baza  danych)  zawiera  kolekcje:  Containers  (kontenery),  Relations  (relacje),  QueryDefs 
(Definicje  zapytań),  TableDefs  (definicje  tabel),  Recordsets  (Zestawy  rekordów).  PoniŜej  w 
tabeli znajduje się krótki opis kaŜdej z tych kolekcji. 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

45 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Containers 

W  obiekcie  kontener  znajdują  się  informacje  o  bazie  danych  i  o 
wszystkich  zachowanych  w  bazie  tabelach,  kwerendach,  relacjach, 
formularzach,  raportach,  makrach,  modułach,  stronach  dostępu  do 
danych. 
Kontenery  Forms  i  Reports  zawierają  informacje  o  wszystkich 
obiektach zachowanych w bazie, kolekcje Forms i Reports, omawiane 
w pierwszej części szkolenia, tylko o obiektach otwartych. 
W  kaŜdym  kontenerze  wybranego  typu  znajduje  się  kolekcja 
Dokumentów  (Documents),  z  których  kaŜdy  opisuje  jeden  obiekt 
danego typu zachowany w bazie. 
Obiekt  dokument  nie  zawiera  kolekcji  ani  metod,  ale  ma  między 
innymi właściwości: 
Container 

- nazwa konteneru, do którego naleŜy obiekt Dokument 

Name   

- nazwa obiektu 

Relations 

KaŜdy  obiekt  Relation  reprezentuje  relację  w  bazie  danych.  Obiekt 
Relation składa się z obiektów Fields. 

QueryDefs 

Obiekt QueryDef zawiera definicję kwerendy. 

TableDefs  (kolekcja 
domyślna) 

Obiekty TableDef zawierają definicje tabel i tabel dołączonych. 

Recordsets 

Obiekty  typu  Recordset  reprezentują  rekordy  z  tabel  lub  rekordy          
z dynamicznego zestawu rekordów otrzymanego w wyniku zapytania. 

Za  pomocą  obiektów  wymienionych  w  powyŜszej  tabeli  moŜna  z  poziomu  kodu  języka 
Visual Basic modyfikować strukturę bazy danych (na przykład tworzyć tabele, modyfikować 
tabele, jak równieŜ modyfikować wartości rekordów z danymi). 

Na początku szczegółowo omówimy obiekt typu recordset. 

W programie Access97 dostępnych jest pięć typów obiektów recordset dla programowania w 
DAO (w tym jeden tylko przy uŜyciu ODBC) 

1.  Tabelowy  zestaw  rekordów  DAO  (table).  MoŜe  odnosić  się  tylko  do  lokalnej  tabeli. 

Ź

ródło  nie  moŜe  być  tabelą  dołączoną.  W  tabelowym  zestawie  rekordów  moŜna 

ustanowić  indeks  bieŜący  i  uŜyć  go  do  wyszukiwania  wierszy  za  pomocą  metody  seek 
dostępnej tylko dla tego typu zestawu. Typ tabelowy jest typem domyślnym dla lokalnych 
tabel. 

2.  Dynamiczny zestaw wyników DAO (dynaset). Źródłem rekordów dla tego zestawu moŜe 

być  tabela  lokalna,  tabela  dołączona,  kwerenda  lub  instrukcja  SQL.  Do  wyszukiwania 
rekordów  w  tym  zestawie  rekordów  moŜna  uŜyć  metody  find.  Pozwala  uzyskiwać  i 
aktualizować  dane  z  jednej  lub  kilku  połączonych  tabel  i  moŜe  zawierać  aktualizowalne 
rekordy. Obiekt Recordset typu zestaw dynamiczny jest zestawem rekordów, który moŜna 
stosować do dodawania, zmiany lub usuwania rekordów z określonej tabeli lub tabel bazy 
danych.  Typ  dynamiczny  jest  typem  domyślnym  dla  tabel  dołączonych,  kwerend  i 
instrukcji  SQL.  śeby  w  zestawie  obejrzeć  nowododane  rekordy  naleŜy  uŜyć  metody 
requery dla rekordsetu. 

3.  Utrwalony zestaw wyników DAO (snapshot). Zwraca kopie danych istniejących w bazie 

w  momencie  tworzenia  zestawu.  Kopii  tych  nie  moŜna  modyfikować.  Do  wyszukiwania 
rekordów  słuŜy  metoda  find.  Przydatny  na  przykład  do  generowania  raportów  lub 
wyszukiwania wartości. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

46 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

4.  Zestaw  (DAO)  i  kursor  (ADO)  typu  progresywnego  (forward  only)  jest  to  typ  podobny 

do  typu  utrwalonego,  z  wyjątkiem  tego,  Ŝe  nie  jest  udostępniany  Ŝaden  kursor.  Rekordy 
udostępnione  przez  ten  typ  zestawu  moŜna  przewijać  tylko  w  przód  rekord  po  rekordzie 
(metoda  movenext).  Efektem  jest  lepsza  wydajność  w  sytuacji,  gdy  potrzebne  jest  tylko 
jedno przejście po rekordach zestawu wynikowego. W ADO ten typ kursora jest kursorem 
domyślnym. 

Kiedy  tworzony  jest  nowy  obiekt  Recordset,  bieŜący  rekord  jest  ustawiany  na  pierwszym 
rekordzie,  jeŜeli  istnieją  juŜ  jakieś  rekordy.  Jeśli  nie  ma  Ŝadnych  rekordów,  właściwość 
RecordCount przyjmuje wartość 0, a właściwości BOF i EOF przyjmują wartość True. 

W jaki sposób otworzy

ć

 zestaw rekordów ? 

Zestawy  rekordów  tworzy  metoda  OpenRecordset  (DAO).  Metoda  OpenRecordset  jest 
dostępna dla obiektów typu: Database, TableDef, QueryDef i Recordset. W pierwszych trzech 
przypadkach składnia jest inna niŜ dla ostatniego: 

Składnia dla obiektu typu Database

Set zmienna = baza_danych.OpenRecordset(źródło,typ[,opcje]) 

źródło  -  ciąg  znaków  określający  źródło  rekordów  dla  tworzonego  zestawu.  MoŜe  to  być 
nazwa tabeli, nazwa kwerendy lub instrukcja SQL wybierająca rekordy. 

typ - jedna z pięciu stałych predefiniowanych:  

• 

dbOpenTable 

Otwiera obiekt Recordset typu tabelowego 

• 

dbOpenDynamic  Otwiera obiekt Recordset typu dynamicznego (tylko ODBC). 

• 

dbOpenDynaset 

Otwiera obiekt Recordset typu zestaw dynamiczny 

• 

dbOpenSnapshot  Otwiera obiekt Recordset typu utrwalonego 

• 

dbOpenForwardOnly  

Otwiera obiekt Recordset typu progresywnego. 

Opcje dla DAO – dowolna ilość z ośmiu dostępnych w DAO. 

• 

dbAppendOnly 

Tylko dodawanie nowych wierszy (dla table i dynaset) 

• 

dbSeeChanges 

Zabrania równoczesnej edycji rekordu (zwraca błąd) 

• 

dbDenyWrite 

Zabrania edycji i wstawiania, gdy ktoś inny otworzył zestaw. 

• 

dbDenyRead 

Zabrania czytania wierszy, gdy ktoś inny otworzył zestaw. 

• 

dbPessimistic lub dbOpimistic 

Pierwsza  (domyślna)  opcja  blokuje  wiersz 

bezpośrednio  po  uŜyciu  metody  edit.  Blokada  trwa  aŜ  do  wystąpienia  metody  update, 
Druga opcja blokuje wiersz tylko na czas wykonywania metody update. Jeśli ktoś inny 
w tym czasie poddał ten sam wiersz edycji następuje błąd czasu wykonania. 

Przykład tworzenia zestawu rekordów (dla tabeli klienci) 

Dim Baza As Database, Zestaw As Recordset 

Set Baza = DBEngine.Workspaces(0).Databases(0)     albo Set Baza = CurrentDb() 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

47 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Set Zestaw = baza.OpenRecordset(„Klienci”,dbOpenTable, dbOptimistic) 

W tym momencie zmienna zestaw reprezentuje zestaw rekordów w postaci tabeli. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

48 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Wybrane metody dla obiektu Recordset 

metoda 

Składnia  

Działanie 

AddNew 

Zestaw.AddNew 

Dodaje  nowy  rekord  do  zestawu.  Pola  przyjmują 
wartość  Null,  nadawany  jest  kolejny  numer  dla  pola 
automumer.  Dodany  rekord  staje  się  rekordem 
bieŜącym.  Po  Update  rekordem  bieŜącym  staje  się 
rekord który był poprzednio bieŜącym 

Close 

Zestaw.Close 

Zamyka  zestaw  rekordów.  Nie  moŜna  zamknąć  bazy 
danych  metodą  Close  jeśli  jest  otwarty  zestaw 
rekordów.  Próba  zamknięcia  zamkniętego  obiektu 
powoduje wygenerowanie błędu. 

Delete 

Zestaw.Delete 

Usunięcie  bieŜącego  rekordu.  Aby  usunąć  rekord, 
musi  istnieć  bieŜący  rekord.  Jeśli  go  nie  ma,  naleŜy 
uŜyć  metody  Move,  Find  lub  Seek,  albo  ustawić 
właściwość  Bookmark.  Usunięty  rekord  pozostaje 
bieŜącym  aŜ  do  przejścia  do  innego  rekordu.  Nie 
moŜna go jednak edytować. 

Edit 

Zestaw.Edit 

Kopiuje  bieŜący  rekord  z  zestawu  do  bufora  w  celu 
umoŜliwienia przeprowadzenia zmian w rekordzie. Po 
wykonaniu  zmian  i  w  celu  ich  zatwierdzenia  naleŜy 
uŜyć metody Update. Musi istnieć rekord bieŜący. 

FindFirst, 
FindLast, 
FindNext, 
FindPrevious 

Zestaw.FindFirst 
kryteria 

Znajduje odpowiednie rekordy.  
Kryteria  –  wyraŜenie  typu  ciąg  znaków  (klauzula 
WHERE bez słowa kluczowego WHERE, na przykład:  
kryteria = "Title = 'Sales Representative'" 

 

Właściwość  Zestaw.NoMatch  =  True  określa,  Ŝe 
operacja wyszukiwania się nie powiodła.. 

Move 

Zestaw.Move 
ile_wierszy[, start] 

Przesuwa rekord o podaną ilość wierszy.  
Ile_wierszy  (dodatnia  liczba  do  przodu,  ujemna  do 
tyłu) 
start – ciąg znaków identyfikujący zakładkę. 

MoveFirst 
MoveLast 
MoveNext  
MovePrevious 

Zestaw.MoveFirst 
kryteria 

Poruszanie się w zestawie rekordów. 

OpenRecordSet  Zestaw.OpenReco

rdset 
([typ],[opcje]) 

Tworzenie  recordsetu  na  podstawie  juŜ  istniejącego 
Set 

nowyzestaw 

zestaw. 

OpenRecordSet 

([typ],[opcje]) 

Requery 

Zestaw.Requery 

Aktualizacja  zestawu  rekordów  przez  ponowne 
wykonanie zapytania 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

49 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Seek 

Zestaw.Seek 

porównanie

klucz1, klucz2 ... 

1. MoŜna stosować tylko w indeksowanych zestawach 
typu tabela. 
2. porównanie - jeden z operatorów >,>=,<,<=,= 
3.  wartości  odpowiadające  polom  klucza  bieŜącego 
indeksu zestawu 

Update 

zestaw.Update 

Zachowuje  zmiany  wprowadzone  do  bieŜącego 
rekordu metodą AddNew lub Edit 

Właściwości recordsetów: 

Nazwa 

Opis 

BOF, EOF 

Wskazuje  czy  bieŜący  rekord  jest  przed  pierwszym  lub  po  ostatnim 
rekordzie. Wskaźniki tylko do odczytu. 

Przykłady zastosowania: 

1. Do Until MyTable.EOF 

         MyTable.MoveNext (...) 

    Loop 

2  MyTable.MoveLast 

   Do Until MyTable.BOF 

          MyTable.MovePrevious (...) 

   Loop 

Bookmark 

Ustawia  zakładkę  jednoznacznie  identyfikującą  rekord  w  zestawie 
odczyt/zapis. 

Dim zakladka As String 

Zakladka = zestaw.Bookmark 

...(instrukcje przenoszące rekord bieŜący) 

zestaw.Bookmark = zakladka 

Bookmarkable 

Czy  moŜna  ustawić  zakładkę.  W  przypadku  załączonych  tabel  z  innych 
baz danych moŜe być to niemoŜliwe. 
If zestaw.bookmarkable Then 
...... 
End If
 

Filter 

(dynaset i snapshot  - read/write).  
Set MySet = MyDB.OpenRecordset("Orders", dbOpenDynaset) 
MySet.Filter = "[Ship Country] = 'UK'" 
Set FilteredSet = MySet.OpenRecordset() 

Uwaga.  Po  ustawieniu  filtru  trzeba  ponownie  otworzyć  ten  sam  zestaw  rekordów  jako 
inny. 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

50 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Index 

Ustawia dla zestawu typu tabela bieŜący indeks (read/write). Musi to być 
nazwa istniejącego obiektu typu indeks. 

LastModified  

Dynaset  i  Table,  ustawia  Bookmark  na  ostatnim  modyfikowanym  lub 
dodanym rekordzie. Zestaw.Bookmark = Zestaw.LastModified 

DataCreated, 
LastUpdated 

Data utworzenia tabeli i data ostatniej zmiany projektu tabeli. 

Name 

Nazwa obiektu 

RecordCount 

W  rekordsecie  typu  table  zwraca  ilość  rekordów  w  zestawie.  Usunięcie 
rekordu zmniejsza licznik. 

W  rekordsecie  typu  dynaset  zwraca  ilość  rekordów  do  których  uzyskano 
dostęp  (bezpośrednio  po  otwarciu  zestawu,  jeśli  istnieją  rekordy  zwraca 
wartość  jeden,  jeśli  rekordów  nie  ma  wartość  zero).  W  celu  faktycznego 
policzenia  ilości  rekordów  w  rekordsecie  typu  dynaset  najpierw  trzeba 
przejść  do  rekordu  ostatniego  np.  metodą  movelast.  Wtedy  rekordset 
uzyska dostęp do wszystkich istniejących rekordów. 

Restartable 

Określa  czy  moŜna  ponowić  zapytanie  dla  danego  zestawu  rekordów  
metodą Requery 

Sort 

Sortowanie 
Set MySet = MyDB.OpenRecordset("Orders", dbOpenDynaset) 
MySet.Sort = "[Ship Country]" 

 

' Ustala porządek sortowania’ 

Set SortedSet = MySet.OpenRecordset() 

' Tworzy drugi dynaset ‘ 

Type 

Określa typ zestawu 

ValidationRule 

="UK" 
=100 
Between 10 And 100 
Between #1/1/94# And #3/3/94# 
In ("British Columbia", "Quebec") 
Like "P[A-F]###" 

Wyraz  musi  zaczynać  się  na  literę  P,  po  niej  musi 

wystąpić litera z zakresu od A do F a następnie 3 cyfry. PB281 i PF031 są 
poprawne; PG219 i PBS12 nie są poprawne. 
Dlookup("[State Code]", "[States]", "[State Code]=[Region]") Is Not Null 
Pole  Region  musi  zwrócić  wartość  przechowywaną  w  polu  State  Code  z 
tabeli  States.  WyraŜenie  zwraca  wartość  True  jeŜeli  są  takie  rekordy,  w 
przeciwnym wypadku zwraca wartość False. 

ValidationText 

Komunikat o złamaniu reguły poprawności 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

51 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 27 

Proszę zaprogramować procedurę wypoŜyczającą płytę w formularzu LISTA_PLYT. 

1.  NaleŜy  utworzyć  zestaw  rekordów  dla  tabeli  PLYTY,  ustawić  właściwość  Index,  na 

istniejący  indeks  "numer  płyty",  a  następnie  za  pomocą  metody  Seek  odszukać  rekord 
opisuj
ący daną płytę.  

2.  Jeśli  płyta  nie  jest  wypoŜyczona,  to  po  znalezieniu  rekordu,  otwieramy  go  do  edycji, 

wpisujemy  numer  klienta,  podajemy  komunikat  o  powodzeniu  operacji,  zatwierdzamy 
zmian
ę i opuszczamy procedurę 

3.  Wpisz następującą procedurę

Private Sub wypozycz_Click() 

    If IsNull(Me![lista_tytulow]) Then 

        MsgBox "wybierz jakas płytkę

        Exit Sub 

    End If 

  Dim rcs As Recordset 

  Set rcs = CurrentDb.OpenRecordset("plyty", dbOpenTable) 

  rcs.Index = "numer płyty" 

  rcs.Seek "=", Me!lista_tytulow 

    If rcs.NoMatch Then 

        MsgBox "nie znalazłem płyty" & Me!lista_tytulow 

    Else 

        If IsNull(rcs("nr_klienta")) Then 

            rcs.Edit 

            rcs("nr_klienta") = Forms![Wypozyczalnia]![klient] 

            rcs.Update 

            MsgBox "wypozyczenie dokonane" 

         Else 

            MsgBox "niestety płytę ma inny klient" 

         End If 

    End If 

    rcs.Close 

End Sub 

 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

52 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Ć

WICZENIE 28 

NaleŜy dopisać procedurę, która zadba o odświeŜenie listy płyt poŜyczonych przez klienta na 
formularzu  WYPOZYCZALNIA.  Najładniej  je
śli  odświeŜenie  nastąpi  bezpośrednio  po 
wypo
Ŝyczeniu  płyty.  Proszę  dopisać  do  poprzedniej  procedury  w  odpowiednim  miejscu 
poni
Ŝszą linijkę

Forms![Wypozyczalnia]![l_wyp_plyt].Requery 

Ć

WICZENIE 29 

NaleŜy wpisać procedurę zapisująca zwrot poŜyczonej płyty 

Sub zwrot_plyty_Click() 

Dim rcs As Recordset 

    If IsNull(Me!l_wyp_plyt) Then 

        MsgBox "zaznacz plyte ktora chcesz zwrocic" 

        Exit Sub 

    End If 

    Set rcs = CurrentDb.OpenRecordset("PLYTYy", dbopentable) 

    rcs.Index = "numer płyty" 

    rcs.Seek "=", Me![l_wyp_plyt] 

    If rcs.NoMatch Then 

        MsgBox "nie moge znaleźć płyty" & Me!l_wyp_plyt 

    Else 

        If Not IsNull(rcs("nr_klienta")) Then 

            rcs.Edit 

            rcs("nr_klienta") = Null 

            rcs.Update 

            MsgBox "dokonano zwrotu" 

            Forms![Wypozyczalnia]![l_wyp_plyt].Requery 

        Else 

            MsgBox " ta płyta nie była wypoŜyczona – sprawdź to !!" 

        End If 

    End If 

    rRcs.Close 

End Sub 

 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

53 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

W  dalszej  części  ćwiczeń  będziemy  rejestrować  w  tabeli  WYPOZYCZENIA  wszystkie 
operacje wypoŜyczania i zwrotów (tabela będzie przydatna do naliczania opłat za poŜyczone 
płyty). 

Ć

WICZENIE 30 

1. Proszę załoŜyć tabelę WYPOZYCZENIA o polach:  

Nazwa pola 

Typ danych 

[nr_kolejny] 

Autonumer 

[nr_plyty] 

Liczba całkowita 

[data_wypozyczenia] 

Data/Godzina 

[data_zwrotu] 

Data/Godzina 

[nr_klienta] 

Liczba całkowita długa 

2. Wszystkie pola z wyjątkiem pola [data_zwrotu] proszę ustawić jako wymagane. 

Ć

WICZENIE 31 

Proszę uzupełnić relacje w bazie o utworzoną tabelę w sposób przedstawiony na rysunku: 

 

 

Wynik ćwiczenia 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

54 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Ć

WICZENIE 32 

NaleŜy  w  taki  sposób  zmodyfikować  procedurę  wypoŜyczającą,  aby  równocześnie  z 
zarejestrowaniem  faktu  wypo
Ŝyczenia  płyty  w  tabeli  PLYTY,  w  tabeli  WYPOZYCZENIA 
tworzony  był  nowy  rekord,  a  w  nim  były  rejestrowane  nast
ępujące  dane:  numer  kolejny, 
numer płyty, numer wypo
Ŝyczającego, data wypoŜyczenia 

1.  Przeanalizuj  zmodyfikowaną  wersję  procedury  i  uzupełnij  (modyfikacje  zostały 

podkreślone) 

Sub wypozycz_Click() 

Dim rcs As Recordset, wyp As Recordset 

  Set rcs = CurrentDb.OpenRecordset("PLYTY", dbopentable) 

  Set wyp = CurrentDb.OpenRecordset("WYPOZYCZENIA", dbopentable) 

  rcs.Index = "numer płyty" 

  rcs.Seek "=", Me!lista_tytulow 

    If rcs.NoMatch Then 

        MsgBox "nie znalazłem płyty" & Me!lista_tytulow 

    Else 

        If IsNull(rcs("nr_klienta")) Then 

            rcs.Edit 

            rcs("nr_klienta") = Forms![Wypozyczalnia]![klient] 

            rcs.Update 

            wyp.AddNew 

            wyp("nr_klienta") = Forms![Wypozyczalnia]![klient] 

            wyp("nr_plyty") = Me![lista_tytulow] 

            wyp("data_wypozyczenia") = Date() 

            wyp.Update 

            MsgBox "wypozyczenie dokonane" 

            Forms![Wypozyczalnia]![l_wyp_plyt].Requery 

        Else 

            MsgBox "niestety płytę ma inny klient" 

        End If 

    End If 

    rcs.Close 

    wyp.Close 

End Sub  

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

55 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 33 

Zmodyfikuj  procedurę  zdarzenia  dla  przycisku  Zwrot  płyty  w  taki  sposób  aby  procedura 
zapisywała  w  tabeli  WYPOZYCZENIA  dat
ę  zwrotu  płyty.  PoniŜej  zamieszczona  jest 
zmodyfikowana wersja procedury. 

Sub zwrot_plyty_Click() 

Dim rcs As Recordset, wyp As Recordset 

     Set rcs = CurrentDb.OpenRecordset("plyty", dbopentable) 

    Set wyp = CurrentDb.OpenRecordset("wypozyczenia", dbOpenDynaset) 

    ‘   zwróć uwagę na typ danych dbOpenDynaset – wyjaśnienia poniŜej 

    rcs.Index = "numer płyty" 

    rcs.Seek "=", Me![l_wyp_plyt] 

    If rcs.NoMatch Then 

        MsgBox "nie moge znaleźć płyty" & Me!l_wyp_plyt 

    Else 

        If Not IsNull(rcs("nr_klienta")) Then 

            rcs.Edit 

            rcs("nr_klienta") = Null 

            rcs.Update 

‘ UWAGA  metody find szukają tylko w dbOpenDynaset lub dbOpenSnapshot 

            wyp.FindFirst "[nr_plyty]=" & Me![l_wyp_plyt] & " and 

                                    isnull([data_zwrotu])" 

            wyp.Edit 

            wyp("data_zwrotu") = Date 

            wyp.Update 

            MsgBox "dokonano zwrotu" 

            Forms![Wypozyczalnia]![l_wyp_plyt].Requery 

        Else 

            MsgBox " ta płyta nie była wypoŜyczona !!" 

        End If 

    End If 

    rcs.Close 

    wyp.Close 

End Sub 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

56 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Do dalszych ćwiczeń naleŜy wczytać bazę, która znajduje się w pliku muzyka97_5.mdb 

Wczytana baza została uzupełniona w następujący sposób: 

• 

Uzupełniono  tabelę  WYPOZYCZENIA  o  dwa  pola:  [czy_zaplacone]  (Tak/Nie)  i 
[nr_wplaty] (Liczba całkowita długa) 

• 

Utworzono  tabelę  WPLATY  o  następujących  polach:  [nr_wpłaty]  (autonumer),  [kwota] 
(waluta), [data_wplaty] (Data/Godzina), [nr_klienta] (liczba - całkowita długa) 

• 

Utworzono formularz ROZLICZENIE, na którym znajdują się trzy pola tekstowe mające 
wyświetlać informacje o wypoŜyczonych płytach, o płytach nierozliczonych oraz kwotę do 
zapłacenia. 

• 

Przycisku Wpłata rejestrującego wpłatę za nierozliczone płyty (płyta nierozliczona jest to 
płyta, która została zwrócona i nie została opłacona). 

Naszym zadaniem będzie w kolejnych ćwiczeniach: 

1.  Uzupełnienie procedury wypoŜyczania o wypełnianie pól „czy zapłacone” i „nr 

wpłaty” w tabeli wypoŜyczenia. 

2.  Utworzenie relacji w bazie z udziałem nowej tabeli 

3.  Podpięcie formularza ROZLICZENIE do przycisku Rozliczenie na formularzu 

ROZLICZENIA 

4.  Zaprojektowaniu procedury rozliczającej i wyświetlającej odpowiednie dane na 

formularzu ROZLICZENIA 

5.  Zaprogramowanie przycisku Rejestruj wpłatę  na formularzu :ROZLICZENIA 

Ć

WICZENIE 34 

1.  Proszę  uzupełnić  procedurę  wypoŜyczania  o  wypełnianie  pola:  [czy_zaplacone]  (wstawić 

wartość Nie dla nowego rekordu)  i [nr_wplaty] [wstawić wartość Null].  

2.  W tym celu w procedurze obsługi zdarzenia „Przy kliknięciu” dla przycisku Wypozycz na 

formularzu LISTA_PLYT naleŜy dodać instrukcje: 

            wyp("czy_zaplacone") = 0 

            wyp("nr_wplaty") = Null 

 

 

 

 

 

 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

57 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 35 

Proszę utworzyć odpowiednie relacje zgodnie z poniŜszym rysunkiem: 

 

Wynik ćwiczenia 

Ć

WICZENIE 36 

Proszę zaprogramować działanie przycisku Rozliczanie na formularzu WYPOśYCZALNIA 
według nast
ępującego opisu: 

1.  Działanie  przycisku  -  Dla  wybranego  klienta  procedura  zdarzenia  powinna  otwierać 

formularz o nazwie ROZLICZENIE i wyświetlać na nim następujące informacje: 

• 

 ilość wypoŜyczonych płyt  

• 

ilość płyt oddanych, za które klient jeszcze nie zapłacił 

• 

kwotę  naleŜną  do  zapłacenia  za  oddane  płyty.  Kwota  wyliczana  prostym 
algorytmem  -  suma  wyra
Ŝenia  (opłata  stała  +  ilość_dni  *  stawka)  dla  wszystkich 
oddanych i nie zapłaconych płyt. 

2.  Opisane  w  poprzednich  trzech  punktach  operacje  nie  wymagają  wprowadzania  zmian  do 

danych. 

3.  Oprócz  tych  informacji,  na  formularzu  ROZLICZENIE  znajduje  się  przycisk  Rejestruj 

wpłatę, którego zadaniem będzie zapisanie niezbędnych danych w bazie, w przypadku gdy 
u
Ŝytkownik zdecyduje się zarejestrować wpłatę zgodnie z rozliczeniem. 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

58 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

4.  Za  wyświetlenie  formularza  i  umieszczenie  na  nim  informacji  odpowiedzialna  jest 

następująca procedura: (komentarze wewnątrz procedury) 

(pola do wypełnienia: [ilosc_plyt], [ilosc_nierozliczona], [do_zaplacenia]) 

Sub rozlicz_Click() 

If IsNull(Me!klient) Then 

    MsgBox "najpierw wybierz klienta" 

    Exit Sub 

End If 

Dim il_ukl As Integer, il_nzl As Integer, kwota As Currency, wyp As Recordset 

Set wyp = CurrentDb.OpenRecordset("wypozyczenia") 

DoCmd.OpenForm "rozliczenie" 

    il_uk = 0    ' ilość płyt, które klient ma jeszcze w domu 

    il_nzl = 0   ' ilość płyt, które klient oddał ale jeszcze za nie nie zapłacił 

    kwota = 0  ‘ kwota do zapłacenia 

    wyp.MoveFirst                                      ' idz do pierwszego rekordu 

    Do While wyp.EOF = False                 ' dopóki nie dojdziesz do końca rób pętlę 

' ponizszy warunek sprawdza płyty które klient ma w domu 

        If wyp("nr_klienta") = Val(Me!klient) And IsNull(wyp("data_zwrotu")) Then 

            il_ukl = il_ukl + 1 

        End If 

' poniŜszy warunek sprawdza płyty które klient oddał i chce za nie zapłacić 

        If wyp("nr_klienta") = Val(Me!klient) And Not IsNull(wyp("data_zwrotu")) And 

                                             Not wyp("czy_zaplacone") Then 

            il_nzl = il_nzl + 1 

            kwota = kwota + 1 + (Date - wyp("data_wypozyczenia")) * 2 

        End If 

        wyp.MoveNext ' idz do KONIECZNIE inaczej się zapętlimy – sprawdź dlaczego? 

    Loop    ‘ koniec pętli 

' na samym  końcu wpisujemy obliczone wartości do odpowiednich pól w formularzu  

    Forms![rozliczenie]![ilosc_plyt] = il_ukl 

    Forms![rozliczenie]![ilosc_nierozliczona] = il_nzl 

    Forms![rozliczenie]![do_zaplacenia] = kwota 

    wyp.Close 

End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

59 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Ć

WICZENIE 37 

NaleŜy  przeanalizować  rejestrację  wpłaty  za  pomocą  przycisku  Rejestruj  wpłatę  na 
formularzu ROZLICZENIE 

1.  Jakie operacje powinna wykonać procedura rejestrująca wpłatę ? 

• 

powinna  utworzyć  w  tabeli  WPLATY  nowy  rekord  i  wpisać  tam  numer  klienta, 
datę, i kwotę 

• 

powinna przeszukać tabelę WYPOZYCZENIA,  

znaleźć  wszystkie  rekordy  dla  danego  numeru  klienta,  które  mają  w  polu 
data zwrotu warto
ść inną niŜ „Null” i w polu czy zapłacone wartość „Nie” 

wpisać numer wpłaty do pola nr wpłaty  

w polu czy zapłacone wstawić wartość „Tak”. 

2.  Po  utworzeniu  tej  procedury  zamienimy  ją  w  następnym  ćwiczeniu  na  procedurę 

transakcyjną

Sub zarejestruj_wplate_Click() 

    Dim wpla As Recordset, wyp As Recordset 

    Set wyp = CurrentDb.OpenRecordset("WYPOZYCZENIA") 

    Set wpla = CurrentDb.OpenRecordset("WPLATY") 

' poniŜej instrukcje wpisujące nowy rekord z wpłatą w tabeli WPLATY 

    wpla.AddNew 

    wpla("kwota") = Me![do_zaplacenia] 

    wpla("data_wplaty") = Date 

    wpla("nr_klienta") = Forms![Wypozyczalnia]![klient] 

    wpla.Update 

 

' poniŜej instrukcje aktualizujące tabelę WYPOZYCZENIA dla odpowiednich rekordów 
zmieniane s
ą pola [czy_zaplacone] na Tak i [nr_wpłaty] na odpowiedni numer wpłaty. 
Pytanie tylko jak znale
źć numer wpłaty ? OtóŜ nowy rekord nie staje się automatycznie 
rekordem  bie
Ŝącym.  Rekordem  bieŜącym  pozostaje  najczęściej  rekord,  który  był 
bie
Ŝącym  przed  uŜyciem  metody  AddNew.  Aby  uczynić  dodany  rekord  bieŜącym, 
nale
Ŝy  uŜyć  metody  Move  do  zakładki  (bookmark)  określonej  przez  ustawienie 
wła
ściwości LastModified 

 

    wpla.Move 0, wpla.LastModified 

 

 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

60 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

‘ Czas na zmiany w tabeli WYPOZYCZENIA: 

'  Robimy  pętlę,  przeszukujemy  tabelę  WYPOZYCZENIA,  wyszukujemy  wszystkie 
rekordy  dla  danego  numeru  klienta  [nr_klienta],  które  maj
ą  w  polu  [data_zwrotu] 
warto
ść    ‘inną    niŜ  Null  i  w  polu  [czy_zaplacone]  wartość  Nie,  wpisujemy  numer 
wpłaty do pola [nr_wplaty] a do pola [czy_zapłacone] wstawiamy warto
ść True. 

    wyp.MoveFirst    '  idz  do  pierwszego  rekordu  (warto  się  zastanowić  co  zrobić,  gdy 
nie ma 
Ŝadnego rekordu? 

    Do Until wyp.EOF 

        If wyp("nr_klienta") = Val(Forms![Wypozyczalnia]![klient]) And Not 

                IsNull(wyp("data_zwrotu")) And Not wyp("czy_zaplacone") Then 

            wyp.Edit 

            wyp("czy_zaplacone") = True 

            wyp("nr_wplaty") = wpla("nr_wplaty") 

            wyp.Update 

        End If 

    wyp.MoveNext ' idz do nastepnego 

    Loop 

    wpla.Close 

    wyp.Close 

 

MsgBox "Wpłata została zarejestrowana " 

DoCmd.Close acForm, "ROZLICZENIE" 

End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

61 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Przetwarzanie transakcyjne 

Aby  wymusić  integralność  danych,  na  przykład  w  poprzedniej  procedurze  zadbać  o  to  aby 
dane  zapisane  były  zarówno  w  tabeli  WPLATY  jak  i  w  tabeli  WYPOZYCZENIA,  moŜna 
wykorzystać mechanizm transakcyjny istniejący w Accessie. 

W języku Access Basic istnieją trzy metody obsługi transakcji: 

1.  Metoda BeginTrans - słuŜy do rozpoczęcia nowej transakcji. 

2.  Metoda  CommitTrans  do  zatwierdzenia  wszystkich  zmian  wprowadzonych  od  ostatniej 

metody BeginTrans 

3.  Metoda Rollback słuŜy do wycofania i anulowania wprowadzonych zmian 

 

Metody  powyŜsze  są  metodami  obiektu  Workspace,  stąd  teŜ  ich  składnia  wygląda 
następująco: 

 

Dim Obszar As Workspace 

Set Obszar = DBEngine.Workspaces(0) 

 

Obszar.BeginTrans     

‘rozpoczęcie transakcji 

... 

    

instrukcje 

... 

    

If MsgBox („Czy zachować wszystkie zmiany ?”,4+32) = vbYes then 

 

 

Obszar.CommitTrans  

‘zatwierdzenie transakcji (zmian) 

 

Else 

 

 

Obszar.Rollback 

‘wycofanie transakcji (cofnięcie zmian) 

 

End if 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

62 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Ć

WICZENIE 38 

Proszę  zmienić  poprzednią  procedurę  na  transakcyjną  uwzględniając  jednocześnie  nie 
przyjmowanie wpłaty w wysoko
ści 0 złotych. Nowy kod został podkreślony. 

Sub zarejestruj_wplate_Click() 

 

Dim odp as Integer 

DBEngine.Workspaces(0).BeginTrans  

(..   tutaj procedura juŜ istniejąca aŜ do słówka Loop kończącego pętlę..) 

    Loop 

    wyp.Close 

    wpla.Close 

     

    odp = MsgBox("chcesz przyjąć wpłatę w wysokości " & Me!do_zaplacenia, 4 + 16 + 256) 

    If odp = vbNo Or Me!do_zaplacenia <= 0 Then 

        DBEngine.Workspaces(0).Rollback 

        MsgBox "operacja została anulowana" 

    Else 

        DBEngine.Workspaces(0).CommitTrans 

        MsgBox " wpłata została zarejestrowana" 

    End If 

DoCmd.Close acForm, "ROZLICZENIE" 

End Sub 

 

Na  koniec  warto  jeszcze  dodać  do  formularza  WYPOZYCZENIA  dla  przycisku  zamknij 
króciutk
ą procedurę

Sub zamknij_Click() 

    DoCmd.Close 

End Sub 

 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

63 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Zagadnienia dodatkowe  

Sposób dopisywania rekordów do tabeli b

ę

d

ą

cej 

ź

ródłem wiersza 

dla pola edycji z list

ą

 wyboru (obsługa zdarzenia „Przy warto

ś

ci 

spoza listy”) 

Wykonanie  tego  zadania  polega  na  utworzeniu  procedury  zdarzenia  „Przy  wartości  spoza 
listy”. Procedura taka powinna wykonywać kolejno: 

1.  Wyświetlać  pytanie,  czy  uŜytkownik  na  pewno  chce  wprowadzić  nową  wartość  (moŜe 

nastąpił błąd podczas wpisywania ?) 

2.  Jeśli odpowiedź jest pozytywna to powinniśmy kontynuować 

3.  Instrukcją RunCommand z parametrem acCmdUndo naleŜy wycofać zmiany dokonane w 

tym polu (na razie nie ma zmian, czyli wprowadzonej wartości nie moŜna zatwierdzić bo 
nie ma jej na liście) 

4.  Wyświetlić  formularz  przeznaczony  do  wprowadzania  danych  do  tabeli  (w  naszym 

przypadku formularz WYKONAWCA) 

5.  Do  tego  formularza  powinny  zostać  przepisane  dane  z  pola  edycji  (argument  procedury 

NoweDane

6.  Dalej następuje praca z formularzem (nie ma instrukcji) 

7.  Nadanie  zmiennej  Odpowiedz  wartości  acDataErrContinue  w  celu  zablokowania 

komunikatów o błędach 

Ć

WICZENIE 39 

1.  Oto treść procedury obsługującej zdarzenia „Przy wartości spoza listy” 

2.  Proszę  umoŜliwić  wpisywanie  do  pola  listy  nowych  wykonawców  i  ich  rejestrowanie 

(formularz PLYTY) 

Sub numer_wykonawcy_NotInList(NoweDane As String, Odpowiedz As Integer) 

   Dim odp As Integer 

   odp = MsgBox("Czy chcesz dodać nowego wykonawcę?", 4 + 32) 

    If odp = 6 Then 

        DoCmd.RunCommand acCmdUndo 

        DoCmd.RunCommand acCmdUndo 

        DoCmd.OpenForm "WYKONAWCA", acNormal, , , acFormAdd 

        Forms![wykonawca]![Nazwa_Wykonawcy] = NoweDane 

        Odpowiedz = acDataErrContinue 

    End If 

End Sub 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

64 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Po  utworzeniu  tej  procedury  pozostała  nam  jeszcze  jedna  czynność  do  zaprogramowania. 
OtóŜ wartości z nowego rekordu nie zostaną automatycznie wpisane do naszego wyjściowego 
pola  edycji  (usunęliśmy  je  stamtąd  akcją  RunCommand).  Aby  się  ponownie  pojawiły 
musimy kolejno:  

1. Wybrać formularz PLYTY,  

2. Ponowić zapytanie pola edycji z listą wyboru 

3. Ustawić wartość pola edycji na numer wykonawcy z formularza WYKONAWCY 

4. Po wykonaniu tych czynności formularz WYKONAWCY moŜe zostać zamknięty 

Operacje  podane  w  punktach  1,  2,  3  i  4  powinniśmy  wykonać  dla  zdarzenia  „Przy 
zwolnieniu”
  formularza  WYKONAWCA  ale  tylko  wtedy  jeśli  otwarty  jest  formularz 
PLYTY. PoniŜej podana jest szczegółowa procedura 

UWAGA:  Działanie  to  ma  sens  tylko  wtedy  jeśli  wywołaliśmy  formularz  WYKONAWCA 
opisany  w  poprzedniej  procedurze  sposób.  Jeśli  formularz  WYKONAWCA  otwarty  jest 
niezaleŜnie  i  takie  sytuacje  mogą  się  powtarzać  (nie  powinny  zgodnie  z  koncepcją  bazy)  to 
powinniśmy  przy  programowaniu  przewidzieć  taką  sytuację  wyświetlając  na  przykład 
odpowiednie pytanie. 

UWAGA  Jeśli  wcześniej  nie  przypisano  zdarzeń  do  przycisków  na  formularzu 
WYKONAWCA,  to  naleŜy  to  zrobić  teraz  albo  samodzielnie  ,  albo  wykorzystując  gotowe 
makro a nazwie PRZYCISKI. 

Procedura w formularzu WYKONAWCA: 

Sub Form_Unload(Cancel As Integer) 

Dim numer As Long 

    numer = Me![numer_wykonawcy] 

    If zaladowany("PLYTY") Then 

        DoCmd.SelectObject acForm, "PLYTY" 

        Forms![Plyty]![numer_wykonawcy].Requery 

        Forms![Plyty]![numer_wykonawcy] = numer 

    End If 

End Sub 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

65 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Wykorzystanie j

ę

zyka SQL- przykład 

SELECT 

Składnia 

SELECT [predicate] { * | table.* | [table.]field1 [, [table.]field2.[, ...]]} 

[AS alias1 [, alias2 [, ...]]] 

FROM tableexpression [, ...] [IN externaldatabase] 

[WHERE... ] 

[GROUP BY... ] 

[HAVING... ] 

[ORDER BY... ] 

[WITH OWNERACCESS OPTION] 

Instrukcja SELECT wykorzystuje następujące argumenty: 

 

Argument 

Opis 

Predicate 

Jedno  ze słów kluczowych: ALL, DISTINCT, DISTINCTROW, or TOP.  
Wykorzystujemy  do  ograniczenia  liczby  rekordów  otrzymanych  w 
wyniku.  

Table 

Nazwa tabeli z której wybieramy rekordy. 

field1, field2 

Nazwy pól z których pobieramy dane.  If you include more than one field, 
they will be retrieved in the order listed. 

alias1, alias2 

Nazwy  kolumn  uŜywane  do  wyświetlania  uzyskanych  danych  w  widoku 
Arkusza danych. 

Tableexpression 

Nazwa tabeli lub tabel z których chcemy pobrać dane. 

Externaldatabase 

Nazwa  bazy  danych  zawierającej  tabele  podane  w  tableexpression,  jeśli 
nie znajdują się w bieŜącej bazie danych. 

 

Minimalna składnia instrukcji SELECT wygląda następująco: 

SELECT fields FROM table 

MoŜna korzystać ze znaku (*) aby wybrać wszystkie pola.  Na przykład z tabeli Employees: 

SELECT Employees.* FROM Employees; 

Nazwę pola moŜna poprzedzić nazwą tabeli i kropką. 

SELECT Employees.Department, SupvName 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

66 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

FROM Supervisors, Employees 

WHERE Employees.Department = Supervisors.Department; 

Słowo  kluczowe As słuŜy do określania nowych nazw pól w widoku Arkusza danych 

SELECT [Birth Date] AS Birth 

FROM Employees; 

Instrukcja SELECT lub SELECT...INTO wybierają wszystkie rekordy.  Jeśli chcemy wybrać 
tylko  niektóre,  spełniające  załoŜone  kryteria  naleŜy  skorzystać  z  klauzuli  WHERE.    MoŜna 
uŜywać takŜe predykatów ALL, DISTINCT, DISTINCTROW, or TOP.  Jeśli uŜyty jest jeden 
z  predykatów  DISTINCT,  DISTINCTROW,  or  TOP,  zapytanie  jest  filtrowane  juŜ  po 
wszystkich innych klauzulach instrukcji SQL 

Składnia 

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] 

FROM sourcetable 

ALL 

Domyślnie,  jeśli  nie  wybierzemy  inaczej    uŜywane  jest  ALL.  PoniŜsze  dwa  przykład  są 
równoznaczne: 

SELECT ALL *  

FROM Employees  

ORDER BY [Employee ID]; 

 

SELECT *  

FROM Employees  

ORDER BY [Employee ID]; 

DISTINCT 

DISTINCT uŜywa się wtedy, gdy nie chcemy włączać do zestawu wyników rekordów, które 
zawierają zdublowane dane w wybranych polach. 

SELECT DISTINCT [Last Name]  

FROM Employees 

DISTINCT  jest  równowaŜny  ustawieniu  we  właściwościach  kwerendy  opcji  Wartości 
Unikatowe na Tak 

DISTINCTROW 

DISTINCTROW uŜywa się wtedy aby zapytanie nie wyświetlało identycznych rekordów, a 
nie jak poprzednio tylko rekordów z takimi samymi wartościami w wybranych polach. 
PoniŜszy kod SQL pokazuje zastosowanie DISTINCTROW do wyświetlenia tylko tych firm 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

67 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

które złoŜyły przynajmniej jedno zamówienie, nie wyświetlając równocześnie szczegółów 
zamówień: 

SELECT DISTINCTROW [Company Name]  

FROM Customers INNER JOIN Orders  

ON Customers.[Customer ID] = Orders.[Customer ID]  

ORDER BY [Company Name]; 

Jeśli  nie  będzie  DISTINCTROW,  kaŜda  firma  pojawi  się  tyle  razy  na  liście,  ile  zamówień 
złoŜyła 

DISTINCTROW jest ignorowany jeśli zapytanie dotyczy tylko jednaj tabeli. 

DISTINCTROW  jest  równowaŜny  ustawieniu  we  właściwościach  kwerendy  opcji  Rekordy 
Unikatowe na Tak (wartość domyślna). 

TOP 

Wybiera tylko pierwsze rekordy w podanej ilości: 

SELECT TOP 25 [First Name], [Last Name] 

FROM Students 

WHERE [Graduation Year] = 1994 

ORDER BY [Grade Point Average] DESC 

 

SELECT TOP 10 PERCENT [First Name], [Last Name] 

FROM Students 

WHERE [Graduation Year] = 1994 

ORDER BY [Grade Point Average] DESC 

klauzula WHERE 

Za pomocą klauzuli WHERE moŜna filtrować rekordy, czyli decydować o tym, które rekordy 
zostaną włączone do wyniku zapytania. 

Składnia 

SELECT fieldlist 

FROM tableexpression 

WHERE criteria 

Polecenie SELECT z klauzulą WHERE wykorzystuje następujące argumenty. 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

68 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Argument 

Description 

fieldlist 

nazwy  pól  wraz  z  aliasami  i  predykatami  selekcji  (ALL,  DISTINCT, 
DISTINCTROW, or TOP), lub inne opcje instrukcji SELECT 

tableexpression 

Nazwa tabeli lub tabel 

criteria 

WyraŜenie,  które  musi  być  prawdziwe  aby  rekord  pojawił  się  w 
wyniku zapytania (został wybrany) 

WHERE  jest  opcjonalne  lecz  jeśli  zostanie  dołączone,  umieszczane  jest  po  FROM.    Na 
przykład  wybór  wszystkich  pracowników  z  jednego  departamentu  lub  w  podanym  zakresie 
wiekowym  

WHERE Dept = 'Sales' 

lub 

WHERE Age Between 18 And 30 

Do klauzuli WHERE jest bardzo podobna klauzula HAVING.  WHERE określa które rekordy 
zostaną  wybrane  a  HAVING  które  rekordy  będą  wyświetlane  juŜ  po  agregowaniu  przez 
GROUP BY. 

Przykłady wyraŜeń dla klauzuli WHERE 

 

SELECT [Last Name], Salary 

 

FROM Employees 

 

WHERE Salary > 21000; 

Klauzula WHERE moŜe składać się z 40 wyraŜeń połączonych operatorami logicznymi And i 
Or. 

 

SELECT [Product ID], [Units In Stock] 

 

FROM Products 

 

WHERE [Units In Stock] <= [Reorder Level]; 

Literały typu data muszą być podane w formacie U.S., nawet jeśli uŜywa się innej wersji 
programu Access.  Na przykład Maj 10, 1994, powinien być wprowadzony jako 5/10/94, na 
przykład: 

 

SELECT * 

 

FROM Orders 

 

WHERE [Shipped Date] = #5/10/94# 

Klauzula FROM 

W  klauzuli  FROM  do  łączenia  danych  z  róŜnych  tabel  moŜna  uŜywać  operatorów  połączeń 
LEFT JOIN and RIGHT JOIN. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

69 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Składnia 

FROM table1 [ LEFT | RIGHT ] JOIN table2  

ON table1.field1 = table2.field2 

Argumenty LEFT JOIN i RIGHT JOIN. 

 

Argument 

Description 

table1, table2 

nazwy tabel 

field1, field2 

Nazwy pól łączących. 

 

LEFT  JOIN  wyświetla  wszystkie  rekordy  z  tabeli  po  lewej  stronie  i  tylko  odpowiadające  z 
tabeli po prawej 

RIGHT JOIN odwrotnie. 

Przykład: 

SELECT [Category Name], [Product Name]  

FROM Categories LEFT JOIN Products  

ON Categories.[Category ID] = Products.[Category ID]; 

 

Do połączeń wewnętrznych (połączone pola równe) słuŜy operator INNER JOIN. 

Połączenia INNER, RIGHT i LEFT moŜna zagnieŜdŜać ze sobą. 

 

SELECT [Department Name], [First Name] & " " & [Last 
Name] AS Name 

FROM Departments LEFT JOIN Employees 

ON Departments.[Department ID] = 
Employees.[Department ID] 

ORDER BY [Department Name]; 

Wyświetla  wszystkie  wydziały, 
nawet  jeśli  nie  ma  w  nich 
pracowników 

SELECT [Last Name] & ", " & [First Name] AS Name, 
[Department Name]  

FROM Departments RIGHT JOIN Employees 

ON Departments.[Department ID] = Employees.[Department ID]  

ORDER BY [Last Name] & ", " & [First Name]; 

Wyświetla wszystkich 
pracowników nawet 
jeśli nie są przypisani 
do wydziałów 

 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

70 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Filtrowanie przez formularz 

Ć

WICZENIE 40 

1.  Proszę wczytać bazę danych, która znajduje się w pliku muzyka97_6.mdb 

2.  NaleŜy wykonać filtrowanie przez formularz dla tabeli KLIENCI.  

W bazie danych muzyka97_6.mdb zostały dodane następujące obiekty: 

• 

Z  bazy  danych  Northwind.mdb  została  zaimportowana  tabela  PRODUKTY.  Będziemy 
filtrowa
ć produkty przez pola cena jednostkowa i nazwa produktu. 

• 

Utworzono formularz zespolony o następującej budowie: 

formularz  główny  (niezwiązany)  o  nazwie  PRODUKTY  zawierający  trzy  pola 
niezwi
ązane: wsp, kryteria, kryteria1 oraz przyciski słuŜące do filtrowania: 

formularz  wyświetlający  dane  z  listy  produktów  w  widoku  Arkusza  danych,  o 
nazwie PRODUKTY_PF - jest to podformularz do formularza PRODUKTY. 

3. Tworzenie mechanizmu filtrowania zaczniemy od obsługi przycisku Filtruj a konkretnie od 

procedury  obsługi  zdarzenia  „Przy  kliknięciu”.  Ta  procedura  powinna  wykonywać 
nast
ępujące działania: 

• 

Na  podstawie  danych  wprowadzonych  do  pól  nazwa  wsp,  kryteria,  kryteria1, 
powinna tworzy
ć kryterium dla klauzuli WHERE instrukcji SELECT. Kryterium jest 
postaci ci
ągu znaków 

• 

W tym celu wprowadzimy dwie zmienne: 

Kod_sql - zmienna znakowa zawierająca treść instrukcji SELECT 

Kryteria  -  zmienna  znakowa  zawierająca  treść  klauzuli  WHERE  bez  słowa 

kluczowego WHERE 

• 

 Zmienną 

kod_sql 

zainicjujemy 

postaci 

ciągu 

znaków 

instrukcji 

„SELECT(...)WHERE .” Na końcu koniecznie musi stać znak spacji! 

• 

Teraz  musimy  zamienić  wartości  z  pól  wsp,  kryteria  i  kryteria1  na  ciągi  znaków, 
utworzy
ć  poprawny  ciąg  znaków  będący  kryterium  i  dołączyć  go  do  instrukcji 
SELECT 

• 

Kolejna  czynność  to  zmiana  źródła  rekordów  dla  podformularza  na  utworzoną 
przez nas instrukcj
ę SELECT 

• 

Następna czynność to ponowienie kwerendy dla podformularza 

4. PoniŜej znajduje się treść procedur do filtrowania tylko po nazwie oraz po nazwie i cenie 
jednocze
śnie. 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

71 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Sub Polecenie5_Click() 

Dim kod_sql As String, kryteria As String, zrodlo As String 

 

'  Utworzenie klauzuli WHERE wykorzystującej kryteria wprowadzone 

'  przez uŜytkownika i ustawienie właściwości "Źródło rekordów" formularza "Produkty_pf". 

'  Chr(39) to apostrof 

'  Chr(42) to gwiazdka 

 

kod_sql  =  "SELECT  DISTINCTROW  Produkty.[Id  produktu],Produkty.[Cena  jednostkowa], 
Produkty.[Nazwa produktu], Produkty.[id kategorii] FROM Produkty WHERE " 

kryteria  =  "(Produkty.[Nazwa  produktu])  Like  "  &  Chr(39)  &  Chr(42)  &  Me!kryteria  & 
Chr(42) & Chr(39) 

zzrodlo = kod_sql & kryteria 

Me![Produkty_pf].Form.RecordSource = zrodlo 

Me![Produkty_pf].Requery 

End Sub 

 

Sub Polecenie6_Click() 

Dim kod_sql As String, kryteria As String, zrodlo As String, kryteria2 As String 

kod_sql  =  "SELECT  DISTINCTROW  Produkty.[Id  produktu],Produkty.[Cena  jednostkowa], 
Produkty.[Nazwa produktu], Produkty.[id kategorii] FROM Produkty WHERE " 

kryteria  =  "(Produkty.[Nazwa  produktu])  Like  "  &  Chr(39)  &  Chr(42)  &  Me!kryteria  & 
Chr(42) & Chr(39) 

kryteria2 = "(Produkty.[cena jednostkowa])>=" & Me!kryteria1 

zrodlo = kod_sql & kryteria & " and " & kryteria2 

Me![Produkty_pf].Form.RecordSource = zrodlo 

Me![Produkty_pf].Requery 

End Sub 

Ć

WICZENIE 41 

Jako  samodzielne  ćwiczenie  proszę  napisać  procedurę  obsługi  zdarzenia  „Przy  kliknięciu” 
dla przyciksu Poka
Ŝ wszystko

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

72 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

Podł

ą

czanie danych z zewn

ę

trznych 

ź

ródeł 

Proces podłączania tabel ze źródeł zewnętrznych przebiega w następujących krokach: 

1.  Za  pomocą  metody  CreateTableDef  dla  bieŜącej  bazy  danych  (jeśli  tabela  ma  być 

przyłączona w bieŜącej bazie danych) naleŜy utworzyć obiekt TableDef. 

2.  Następnie naleŜy określić właściwości Connect i SourceTableName obiektu TabelDef. 

3.  Za  pomocą  metody  Append  kolekcji  TableDefs  naleŜy  obiekt  utworzony  w  punkcie 

pierwszym,  o  właściwościach  określonych  w  punkcie  drugim  dołączyć  do  kolekcji 
TableDefs. 

Ć

WICZENIE 42 

Proszę  utworzyć  nowy  niezwiązany  formularz  o  nazwie  DOLACZ  i  stworzyć  w  nim  trzy 
przyciski  polece
ń.  NaleŜy  oprogramować  pierwsze  dwa  przyciski  -  podłącz  tabelę  xls  i 
podł
ącz tabelę dbf Patrz uwaga pod ćwiczeniem 43.

 

 

Sub Polecenie1_Click() 
Dim def_tab As TableDef 
Set def_tab = CurrentDb.CreateTableDef("z_excela") 
def_tab.Connect = "Excel 5.0;DATABASE=C:\e.xls" 
def_tab.SourceTableName = "lampa$" 
CurrentDb.TableDefs.Append def_tab 
End Sub 

 

Sub Polecenie2_Click() 
Dim def_tab As TableDef 
Set def_tab = CurrentDb.CreateTableDef("z_dbf") 
def_tab.Connect = "dBASE III;DATABASE=C:\" 
def_tab.SourceTableName = "e#dbf" 
CurrentDb.TableDefs.Append def_tab 
End Sub 

 

Ć

WICZENIE 43 

Proszę napisać procedurę zdarzenia dla odłączania obu tabel. 

 
Sub Polecenie3_Click() 
CurrentDb.TableDefs.Delete "z_excela" 
CurrentDb.TableDefs.Delete "z_dbf" 
End Sub 

 

UWAGA dla powyŜszych procedur muszą istnieć poniŜsze pliki: 

c:\e.xls z arkuszem o nazwie lampa, oraz plik c:\e.dbf 

background image

     

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel(0-22) 654-55-22 , fax (0-22) 654-55-23 

73 

MS Access 97 – zaawansowane techniki 
programowania baz danych

 

Obsługa bł

ę

dów wykonania 

Visual  Basic  posiada  dosyć  prosty  mechanizm  obsługi  błędów  wykonania.  W  poprzednich 
ć

wiczeniach podczas próby dołączenia plików z excela, czy z dbf mogły zaistnieć róŜne błędy 

wykonania – na przykład nie moŜna znaleźć dołączanego pliku lub istnieje juŜ tabela o takiej 
samej nazwie – moŜna wzbogacić nasz kod o obsługę tych błędów: 

 

Sub Polecenie1_Click() 
On Error GoTo byk 
 
Dim def_tab As TableDef 
Set def_tab = CurrentDb.CreateTableDef("z_excela") 
def_tab.Connect = "Excel 5.0;DATABASE=C:\e.xls" 
def_tab.SourceTableName = "lampa$" 
CurrentDb.TableDefs.Append def_tab 
 
Ŝeby procedura nie weszła do obsługi błędu 
‘ gdy jest prawidłowo wykonywana nale
Ŝy zastosować exit sub 
Exit Sub 
byk: 
Select Case Err.Number     ‘ sprawdzam numer bł
ędu 
 
    Case 3012 ' obiekt o podanej nazwie ("z_excela") ju
Ŝ istnieje 
              ' DECYZJA :           usuwamy istniej
ący obiekt 
                                             i próbujemy ponowi
ć linię w której błąd powstał 
        CurrentDb.TableDefs.Delete "z_excela" 
        Resume 
     
    Case 3125           ' w przypadku pliku doł
ączanego z excela podano błędną 
                                ' nazw
ę arkusza (nie istnieje arkusz o nazwie "lampa" 
                                ' znak dolara jest tylko symbolicznym oznaczeniem arkusza 
                ' DECYZJA: 
                              ' wyswietlamy odpowiedni komunikat i przerywamy procedur
ę 
              MsgBox "Podano nieprawidłow
ą nazwę arkusza" + vbCr + _ 
              " spodziewana nazwa to <lampa>" 
    Case 3011          ' nieprawidłowa 
ścieŜka dostępu do arkusza "lampa" 
                               ' na przykład nie istnieje plik c:\e.xls 
                ' DECYZJA: 
                               ' wy
świetlamy odpowiedni komunikat i przerywamy procedurę 
              MsgBox " Nie mo
Ŝna odnaleźć pliku c:\e.xls" + vbCr + _ 
                     " lub arkusza o nazwie lampa" 
    Case Else 
        MsgBox " numer bł
ędu   : " + Str(Err.Number) + vbCr + _ 
               " opis bł
ędu    : " + Err.Description + vbCr + _ 
               " plik pomocy   : " + Err.HelpFile + vbCr 
             End Select 
End Sub 

background image

    

 

 

 

W sprawie informacji i zapisów na szkolenia prosimy dzwonić: tel. (0-22) 654-55-22 , fax (0-22) 654-55-23 

74 

MS Access 97 – zaawansowane techniki 

programowania baz danych

 

 
 

 

Opis: 

W powyŜszej procedurze instrukcja On Error GoTo byk powoduje włączenie obsługi błędów. 

W  przypadku  wystąpienia  błędu  nastąpi  skok  z  instrukcji,  która  spowodowała  błąd  do 
instrukcji oznaczonej etykietą byk : 

Instrukcja  Resume  powoduje  kontynuację  wykonywania  programu od powtórzenia instrukcji 
która błąd spowodowała 

UWAGA

Instrukcja Resume, w zaleŜności od potrzeb moŜe wystąpić w trzech postaciach: 

1.  Resume  -  powoduje  wznowienie  wykonania  programu  od  instrukcji  w  której  wystąpił 

błąd.  

2.  Resume  Next  -  powoduje  wznowienie  wykonania  programu  od  następnej  instrukcji  po 

instrukcji w której wystąpił błąd. 

3. 

Resume  nr_wiersza  (lub  etykieta)  -  powoduje  wznowienie  wykonywania  programu  od 
wiersza lub podanej etykiety.