• Nie Znaleziono Wyników

Relacyjne Bazy Danych

N/A
N/A
Protected

Academic year: 2021

Share "Relacyjne Bazy Danych"

Copied!
43
0
0

Pełen tekst

(1)

1

Relacyjne Bazy Danych

wykład XI

(2)

2 opr. Lech Banachowski, Jan Wierzbicki

Język aplikacji baz danych – Visual Basic - c.d.

Ważniejsze polecenia języka VBA Są to metody predefiniowanych obiektów:

• DoCmd - reprezentuje polecenie,

• Application - reprezentuje aplikację MS Access,

• Debug - reprezentuje środowisko uruchamiania kodu,

• Err - reprezentuje błąd

jak i samych obiektów interfejsu użytkownika.

(3)

3

Operacje na formularzu.

1. Chodzenie po rekordach formularza w tym wyświetlenie pustego rekordu do wprowadzenia danych, np. przejście do pierwszego rekordu formularza realizuje polecenie:

• DoCmd.GoToRecord , , acFirst

(w miejsce acFirst można użyć innych predefiniowanych

stałych: acPrevious, acNext, acLast, acNewRec realizując odpowiednią akcję).

2. Otwieranie formularza realizuje polecenie:

• DoCmd.OpenForm nazwa_formularza[,widok]

[,nazwa_filtru][,warunek_WHERE] [,tryb_danych]

[,tryb_okna]

(4)

4 opr. Lech Banachowski, Jan Wierzbicki

Domyślnie gdy nie zamieści się argumentu są przyjmowane

następujące wartości: widok = acNomal, oznacza, że formularz zostaje otwarty w widoku formularz,

tryb_danych=acFormPropertySettings, przyjmowane są ustawienia z arkusza właściwości formularza,

tryb_okna=acWindowNormal oznacza zwykłe okno.

Na przykład:

•DoCmd.OpenForm "Wprowadz_wyswietl firmy", , , , acFormEdit (w miejsce acFormEdit można użyć innych predefiniowanych

stałych: acFormAdd, acFormPropertySettings, acFormReadOnly).

Operacja otwierania raportu jest analogiczna z tym, że ma mniej parametrów:

•DoCmd.OpenReport nazwa-raportu[,widok][,nazwa-filtru]

[,warunek-WHERE]

(5)

5

Zamykanie obiektów

•zamknięcie obiektu aktywnego - DoCmd.Close

•zamknięcie konkretnego obiektu - DoCmd.Close acForm,

"Firmy"

Drukowanie bieżącego formularza (również raportu, arkusza danych, stron dostępu do danych, modułu - jeśli jest na nich fokus)

•DoCmd.PrintOut Wykonanie kwerendy

•DoCmd.OpenQuery nazwa-kwerendy, acNormal, acEdit

lub

•DoCmd.RunSQL instrukcja-SQL

(6)

6 opr. Lech Banachowski, Jan Wierzbicki

Ponowienie kwerendy (aktualizacja) dla pola listowego lub formularza.

Dla pola listowego:

•DoCmd.Requery "Id firmy" – tylko dla pola w aktualnym formularzu lub

•Me![Id firmy].Requery lub Forms![Kontrahenci]![Id

firmy].Requery i wówczas można używać także dla pól na innych formularzach.

Dla formularza:

•DoCmd.Requery lub

•Me.Requery

Zakończenie aplikacji:

•DoCmd.Quit lub

•Application.Quit

(7)

7

Filtrowanie zawartości formularza np. aktualizacja formularza wyświetlającego książki po zmianie

niezwiązanego pola tekstowego [Data od]:

•DoCmd.ApplyFilter , "[Data ukazania]>=Forms![Wyszukaj według wymagań]![Data od]"

Wyświetlenie wszystkich rekordów:

•DoCmd.ShowAllRecords

Operacje 8 i 9 można wykonać korzystając ze sposobu reprezentowania filtrów przez Access. Mianowicie,

filtrowanie rekordów odbywa się za pomocą dwóch właściwości formularza:

•Filter - napis określający warunek WHERE;

•FilterOn - wartość logiczna określająca, czy filtr jest włączony.

(8)

8 opr. Lech Banachowski, Jan Wierzbicki

istniejący filtr można włączyć za pomocą instrukcji

•Me.FilterOn = True a wyłączyć za pomocą:

•Me.FilterOn = False (równoważne operacji 9)

Wartość właściwości Filter zostaje zachowana po

zamknięciu formularza (w jego arkuszu właściwości). Przy powtórnym otwarciu jest ona dostępna, przy czym na

początku filtr jest wyłączony Me.FilterOn = False, a więc aby zastosować istniejący filtr trzeba wykonać:

Me.FilterOn = True

(9)

9

Specjalną grupę stanowią polecenia realizujące wykonanie akcji z wbudowanych menu - z zastosowaniem metody

RunCommand obiektu DoCmd (obiekt DoCmd można pominąć).

[DoCmd.]RunCommand polecenie

gdzie polecenie jest stałą reprezentującą odpowiednie

polecenie z wbudowanych menu - pełna lista znajduje się w pomocy Help MS Access pod tematem "RunCommand 

Method Constants" np.

DoCmd.RunCommand acCmdOptions

otwiera okienko dialogowe "Opcje" ("Options") z menu

"Narzędzia" ("Tools").

(10)

10 opr. Lech Banachowski, Jan Wierzbicki

Print jest metodą predefiniowanego obiektu Debug - 

wypisuje wartości kontrolne w okienku analizy programu  (Immediate Window).

Np.

•Debug.Print "Przechodzę do obliczania współczynnika zysku"

(11)

11

Instrukcja MsgBox i obsługa błędów

Tak jak instrukcja Debug.Print służy do wypisywania informacji (z myślą o osobie tworzącej aplikację) przy wykrywaniu błędów w aplikacji, tak instrukcje MsgBox  i InputBox służą do bezpośredniego kontaktu z

użytkownikiem w trakcie wykonywania aplikacji poprzez wyświetlanie odpowiednich informacji w okienkach

dialogowych oraz poprzez przyjmowanie danych od użytkownika.

Na przykład, wykonanie instrukcji

MsgBox "Formularz zostaje zamknięty!",,"UWAGA"

powoduje wyświetlenie następującego okienka dialogowego:

(12)

12 opr. Lech Banachowski, Jan Wierzbicki

A wykonanie instrukcji

x = MsgBox("Czy zapisać na dysku?",vbYesNo ,"UWAGA") powoduje wyświetlenie następującego okienka dialogowego:

(13)

13

Bezpośredni kontakt z użytkownikiem jest potrzebny na przykład, gdy trzeba poinformować użytkownika o wystąpieniu błędu.

Załóżmy, że naciśnięcie przycisku powoduje przejście do poprzedniego rekordu. Gdy użytkownik naciśnie przycisk w sytuacji, gdy aktualnie w formularzu jest wyświetlany pierwszy rekord, instrukcja

•DoCmd.GoToRecord , , acPrevious

nie może być wykonana i powstaje błąd. W poniższej procedurze ten błąd zostaje obsłużony, poprzez skok do etykiety

Error_handler - co realizuje instrukcja On Error GoTo. Następuje wypisanie numeru błędu i tekstu opisu błędu, po czym instrukcja

•Resume Next

kieruje sterowanie do następnej instrukcji po instrukcji powodującej błąd.

(14)

14 opr. Lech Banachowski, Jan Wierzbicki

Private Sub Polecenie_Click ()     On Error GoTo Error_handler

    DoCmd.GoToRecord , , acPrevious     Exit Sub

Error_Handler:

    MsgBox "Znajdujesz się już przy pierwszym zamówieniu"

    Resume Next End Sub

(15)

15 opr. Lech Banachowski, Jan Wierzbicki

Informację o błędzie zaistniałym w czasie wykonywania kodu VBA reprezentuje obiekt Err. W szczególności jego atrybut Err.Description podaje opis ostatniego błędu a atrybut

Err.Number numer tego błędu.

Do obsługi błędów używamy instrukcji On Error. Specyfikuje ona co zrobić, gdy w trakcie wykonywania następnych instrukcji wystąpi błąd:

•On Error GoTo etykieta - przejdź do obsługi błędu w instrukcji oznaczonej przez etykieta,

•On Error Resume - powtórz instrukcję powodującą błąd,

•On Error Resume Next - przejdź do następnej instrukcji po powodującej błąd,

•On Error Resume etykieta - wznów obliczenia od etykieta,

•On Error Stop - zatrzymaj obliczenia.

(16)

16 opr. Lech Banachowski, Jan Wierzbicki

Podobne znaczenie mają instrukcje służące do zakończenia obsługi błędów:

GoTo etykieta | Resume [ | Next | etykieta]|Stop

Poza tym są jeszcze dodatkowe konstrukcje związane z obsługą błędów:

   Err.Raise numer_błędu - spowoduje powstanie błędu o podanym numerze i wymuszenie (w sposób sztuczny) jego

obsługi;

   Error(i) - komunikat o błędzie dla błędu o numerze i.

Wykonanie instrukcji    On Error GoTo 0 wyłącza obsługę błędów.

(17)

17

MsgBox może być również użyte jako funkcja za pomocą, której użytkownik przekazuje do aplikacji swój wybór np. wartość

"Tak" lub "Nie".

x = "Czy chcesz wprowadzić nowe wymagania do oferty?"

   If MsgBox(x, vbYesNo) = vbYes Then    'Gdy wybór użytkownika jest "Tak"

W przypadku, gdy nie można wykonać pewnej akcji np. zapisu do bazy danych, używając MsgBox jako polecenia, informujemy o tym użytkownika, wymuszając na nim przyjęcie tej wiadomości przez naciśnięcie przycisku OK w odpowiednim okienku

dialogowym. Rodzaj odpowiedniego okienka uzyskujemy dobierając argumenty operacji MsgBox.

(18)

18 opr. Lech Banachowski, Jan Wierzbicki

MsgBox może być również użyte gdy w przypadku

niemożliwości wykonania operacji np. zapisu do bazy danych, jest konieczne odwołanie odpowiedniego zdarzenia - w

poniższym przykładzie zdarzenia "Przed aktualizacją".

Procedura wyświetla komunikat, jeśli pole kombo IDklienta jest puste a następnie odwołuje zdarzenie "Przed aktualizacją"

zapobiegając aktualizacji:

Private Sub IDklienta_BeforeUpdate(Cancel As Integer) Dim strMsg As String, strTitle As String

Dim intStyle As Integer

If IsNull([Idklienta]) OR [Idklienta] = "" Then

strMsg="Musisz wybrać wartość z listy Faktura dla."

strTitle = "Wymagany klient faktury"

intStyle = vbOKOnly + vbExclamation MsgBox strMsg, intStyle, strTitle

Cancel = True End If

End Sub

(19)

19

Reasumując, funkcja/polecenie MsgBox ma następujący format:

•MsgBox Tekst, Wygląd_okienka, Tytuł_okienka

Tekst i Tytuł_okienka to odpowiednie teksty, które mają się ukazać w okienku dialogowym, natomiast Wygląd_okienka to wyrażenie liczbowe określające liczbę i typ

wyświetlanych przycisków i ich rodzaj, styl używanych ikon, identyfikator domyślnego przycisku oraz modalność okna komunikatu. Brak tego parametru spowoduje przyjęcie wartości domyślnej vbOKOnly=0.

(20)

20 opr. Lech Banachowski, Jan Wierzbicki

Obok instrukcji MsgBox język VBA dostarcza jeszcze funkcji InputBox służącej do wyświetlenia okienka

dialogowego, do którego użytkownik wprowadza dane np.

•Firma = InputBox("Podaj nazwę firmy, której ogłoszenia chcesz obejrzeć?")

(21)

21

Aktualizacja listy pola kombo

Zakładamy, że właściwość pola kombo "Ogranicz do listy" ("Limit to list") jest ustawiona na "Tak".

Gdy do pola kombo wpiszemy wartość spoza źródła danych tego pola kombo i będziemy chcieli opuścić to pole, zajdzie zdarzenie

"Przy wartości spoza listy" ("On Not in List"), którego

standardowa obsługa polega na poinformowaniu o błędzie i nie dopuszczeniu do wyjścia z pola. Procedura obsługi zdarzenia

"Przy wartości spoza listy" ma jeden parametr wejściowy:

- NewData – przekazujący wprowadzoną przez użytkownika do pola kombo wartość,

oraz jeden parametr wyjściowy:

- Response – informujący system o przyjętej metodzie postępowania:

(22)

22 opr. Lech Banachowski, Jan Wierzbicki

•w procedurze następuje dodanie nowego elementu do źródła danych pola kombo:

•Response = acDataErrAdded

•w procedurze następuje usunięcie wartości NewData z pola kombo za pomocą metody Undo

•Response = acDataErrContinue.

Z kolei albo "zapomina się" o wprowadzonej przez użytkownika wartości, traktując ją jako błąd użytkownika albo zapamiętuje się ją na zmiennej lub w polu formularza, aby po zakończeniu obsługi

zdarzenia NotInList przejść do aktualizacji źródła danych dla listy pola kombo a następnie aktualizacji samej listy rozwijanej pola kombo za pomocą metody Requery. Ten sposób jest przyjęty w przykładowej aplikacji MS Access wprowadzania zamówień.

•jest też możliwość przejścia do standardowej obsługi błędów, ustawiając

•Response = acDataErrDisplay

(23)

23 opr. Lech Banachowski, Jan Wierzbicki

Np. Załóżmy, że mamy listę kolorów o nazwie Kolory i chcemy oprogramować dodanie nowego koloru do listy. Lista kolorów jest bezpośrednio wpisana do pola „Źródło wierszy" ("Row Source").

Właściwość "Ogranicz do listy" ("Limit to List") jest ustawiona na "Tak"

Private Sub Kolory_NotInList(NewData As String, Response As Integer)

   Dim ctl As Control    Set ctl = Me!Kolory

   If MsgBox("Koloru nie ma na liście. Dodać go?", vbOKCancel) = vbOK Then

      Response = acDataErrAdded

      ctl.RowSource = ctl.RowSource & ";" & NewData    Else

     Response = acDataErrContinue      ctl.Undo

   End If End Sub

(24)

24 opr. Lech Banachowski, Jan Wierzbicki

Na zmiennej ctl zapisujemy referencję do pola kombo będącego w VBA obiektem klasy Control. W instrukcji warunkowej prosimy użytkownika o potwierdzenie dodania nowego koloru. Jeśli

użytkownik potwierdzi, ustawiamy argument Response na

acDataErrAdded czyli na dodanie nowego koloru będącego

wartością argumentu NewData do źródła wiersza. Jeśli użytkownik wybierze "Cancel", ustawiamy argument Response na

acDataErrContinue czyli na kontynuowanie bez wyświetlania komunikatu o błędzie. Następnie kasujemy wprowadzoną przez

użytkownika wartość (przy pomocy metody Undo pola formularza).

Uwaga: Zmiana wartości właściwości „Row Source” dotyczy tylko bieżącego obiektu formularza i nie jest zapisywana na stałe do

arkusza właściwości samego formularza.

(25)

25

Procedury zdarzeń z parametrami

Część procedur będących wartościami właściwości zdarzeń, jak to już było widoczne w rozważanych przykładach, ma parametry.

Przy tworzeniu procedury zdarzenia, MS Access sam wpisuje nazwy tych parametrów.

Dalej zamieszczamy listę nagłówków procedur zdarzeń z

parametrami w odniesieniu do formularzy i wyjaśniamy znaczenie tych parametrów. Pomijamy tylko zdarzenia związane z użyciem filtrów.

(26)

26 opr. Lech Banachowski, Jan Wierzbicki

Podstawowymi parametrami są Cancel i Response.

•Nadanie parametrowi Cancel niezerowej wartości (np. True) powoduje skasowanie zdarzenia, którego dotyczy dana

procedura.

•Parametr Response przyjmuje na ogół dwie wartości:

• acDataErrContinue - kontynuuj bez wyświetlania domyślnego komunikatu,

• acDataErrDisplay - wyświetl domyślny komunikat (opcja domyślna).

(27)

27

Oto grupa procedur, w nagłówkach których występują te parametry:

Sub Form_Open (Cancel As Integer) Sub Form_Unload (Cancel As Integer)

Sub Form_BeforeInsert (Cancel As Integer) Sub Form_BeforeUpdate (Cancel As Integer) Sub Form_Delete (Cancel As Integer)

Sub Form_BeforeDelConfirm (Cancel As Integer, Response As Integer)

(28)

28 opr. Lech Banachowski, Jan Wierzbicki

Pozostałe procedury, mające parametry to:

Sub Form_AfterDelConfirm (Status As Integer) Samego zdarzenia "Po usunięciu" nie można już anulować.

Status określa czy rekord został usunięty:

•acDeleteOK - rekord został usunięty,

•acDeleteCancel - usuwanie zostało anulowane w Visual Basic,

•acDeleteUserCancel - usuwanie zostało anulowane przez użytkownika.

(29)

29

Sub Form_KeyPress (KeyAscii As Integer) - KeyAscii to kod ASCII naciśniętego klawisza klawiatury.

Sub Form_Error(DataErr As Integer, Response As Integer)

- DataErr to kod błędu. Umożliwia globalną obsługę błędów w module klasy formularza.

Zdarzenia, których procedury mają parametr Cancel mogą zostać anulowane. Przedstawimy przykład anulowania zdarzenia poprzez ustawienie parametru Cancel na True.

(30)

30 opr. Lech Banachowski, Jan Wierzbicki

W przykładzie poniżej w procedurze zwolnienia formularza

Form1 następuje sprawdzenie, czy w danej chwili pozostał otwarty formularz Form2. Jeśli tak, zdarzenie zwolnienia formularza

zostaje anulowane (przez ustawienie parametru Cancel na True) - tj. formularz Form1 pozostaje dalej otwarty.

Private Sub Form_Unload (Cancel As Integer)    If Otwarty("Form2") Then 

       Cancel = True

       MsgBox "Najpierw zamknij formularz Form2."

   End If End Sub

(31)

31

Użycie instrukcji SQL

Efekt użycia kwerendy wybierającej będącej źródłem danych dla formularza jest widoczny bezpośrednio na formularzu. Często zachodzi potrzeba użycia instrukcji SQL (kwerendy

funkcjonalnej) zmieniającej dane w tabeli bazy danych i ta zmiana jest uzależniona od wartości pól formularza.

Do wykonywania instrukcji SQL w kodzie służy metoda

RunSQL obiektu DoCmd. Jako parametr podaje się napis instrukcji SQL, która ma być wykonana.

(32)

32 opr. Lech Banachowski, Jan Wierzbicki

Przykład 1

Używając zwykłej semantyki usuwania, nie można usunąć działu, do którego są przypisani pracownicy. Najbardziej naturalnym

rozwiązaniem w takiej sytuacji jest zmiana identyfikatora działu w rekordach wszystkich pracowników usuwanego działu na Null,

dokonywana przed usunięciem działu, w procedurze zdarzenia

"Przy usunięciu" ("On Delete").

Private Sub Form_Delete(Cancel As Integer)    DoCmd.RunSQL "UPDATE Pracownicy " & _        "SET Id_działu = Null" & _

       "WHERE Id_działu = " & Me![Id_działu]

End Sub

(33)

33

Zwróćmy uwagę na sposób formowania instrukcji UPDATE, w szczególności sposób dołączenia do niej zawartości pola

formularza. Gdyby Id_działu nie było liczbą tylko napisem, zapis warunku WHERE wyglądałby następująco: "WHERE Id_działu

= '" & Me![Id_działu] & "'". W sytuacji konieczności zagnieżdżenia cydzysłowów, wewnątrz napisu stosuje się pojedyncze cudzysłowy ' .. '.

Zwróćmy też uwagę na to, że w napisie instrukcji SQL nie jest dozwolone umieszczanie odwołań postaci Forms!

[nazwa_formularza]![nazwa_pola] tak jak w poleceniu:

   DoCmd.OpenForm

"Pracownicy",,,"Id_inst=Forms![Instytucje]!Id"

(34)

34 opr. Lech Banachowski, Jan Wierzbicki

Przykład 2

Jeśli użytkownik wprowadza do pola kombo nową wartość, której nie ma na stowarzyszonej liście rozwijanej i chce aby odpowiedni rekord został dopisany do tabeli bazy danych, dołączenie nowego rekordu najlepiej zrealizować za pomocą

instrukcji INSERT. Załóżmy na przykład, że przy wprowadzaniu nowego pracownika, zachodzi potrzeba wprowadzenia

jednocześnie nowego działu. Użytkownik podaje nazwę nowego działu i zachodzi zdarzenie "Przy wartości spoza listy".

(35)

35

Private Sub Id_działu_NotInList(NewData As String, Response As Integer)

   Dim ctl As Control

   Set ctl = Me![Id_działu]

   If MsgBox("Czy chcesz dodać nowy dział?", vbYesNo, "UWAGA") = vbYes Then

       DoCmd.RunSQL "INSERT INTO Działy(Nazwa) VALUES('"& NewData & "')"

       Response = acDataErrAdded   Else

       Response = acDataErrContinue        ctl.Undo

   End If End Sub

Zwróćmy uwagę na brak w instrukcji INSERT pola Id_działu typu Autonumer. Jego wartość jest automatycznie ustalana przez MS Access

(36)

36 opr. Lech Banachowski, Jan Wierzbicki

Do tabeli opisującej osoby dodamy kolumnę „Kolor samochodu”, której wartości znajdują się w tabeli słownikowej Kolory. Na formularzu do edycji osoby

umieszczamy pole kombo z listą rozwijaną o źródle wierszy z tabeli Kolory. Zaprogramujemy wpisywanie nowego

koloru do tabeli Kolory poprzez wpisanie go do pola kombo.

Użyjemy metody RunSQL.

(37)

37

Private Sub Combo1_NotInList(NewData As String, Response As Integer)

   Dim ctl As Control

   Set ctl = Me!Combo4

   If MsgBox("Koloru nie ma na liście. Dodać go?", vbOKCancel) = vbOK Then

     Response = acDataErrAdded

     DoCmd.RunSQL "INSERT INTO Kolory(Kolor) VALUES('" & NewData & "');"

    Else

     Response = acDataErrContinue      ctl.Undo

   End If End Sub

(38)

38 opr. Lech Banachowski, Jan Wierzbicki

Przykład 3

Za pomocą kodu jest możliwa obsługa jednoczesnego wyboru wielu elementów na liście. Właściwość "Wybór wielokrotny"

("Multi Select") powinna być ustawiona na "Prosty" ("Simple") lub "Rozszerzony" ("Extended"). Domyślne ustawienie "Brak"

("None") oznacza, że wybór dotyczy tylko jednego elementu listy.

Korzystając z możliwości wyboru wielokrotnego możemy zaznaczyć wszystkie wymagane elementy z listy a następnie

zbiorczo wykonać na nich pewną operację. Przy wyborze prostym wybierane elementy zaznacza się przy pomocy klawisza spacji lub myszki. Przy wyborze rozszerzonym używa się klawiszy CTRL i SHIFT razem z myszką.

(39)

39

Rozważmy formularz działu, na którym jest wyświetlana lista zatrudnionych w nim pracowników. Pole listowe o nazwie Lista składa się z dwóch kolumn zawierających odpowiednio

identyfikator pracownika (kolumna o szerokości 0cm - nie

wyświetlana) oraz nazwisko pracownika. Po zaznaczeniu grupy pracowników, możemy spowodować ich usunięcie.

(40)

40 opr. Lech Banachowski, Jan Wierzbicki

Przeglądanie wybranych na liście elementów odbywa się przy

użyciu kolekcji ItemsSelected pola listowego oraz funkcji Column zwracającej wartość odpowiedniego elementu na liście. Pierwszym argumentem jest numer kolumny. Drugim argumentem jest pozycja (na liście) będąca elementem kolekcji ItemsSelected. Pozycja na liście jest wartością typu Variant. W przypadku listy powyżej, kolekcja ItemsSelected składa się z numerów 0,3,4. Przy wyborze jednokrotnym można pominąć drugi argument. Do usunięcia osoby wykorzystujemy tutaj metodę RunSQL obiektu DoCmd, której

argumentem jest instrukcja SQL.

(41)

41

Private Sub Usuń_Click()

On Error GoTo Obsługa_błędów

Dim elem As Control, poz As Variant, odp As Integer Dim Tekst As String, ZapSQL As String

Set elem = Me![Lista]

' elem.ItemsSelected - kolekcja zaznaczonych na liście elementów.

For Each poz In elem.ItemsSelected

  'Wartości w kolejnych kolumnach wiersza poz listy to:

  'elem.Column(0,poz), elem.Column(1,poz)

   Tekst = "Czy na pewno chcesz usunąć osobę " & elem.Column(1, poz)

   odp = MsgBox(Tekst, vbYesNo, "UWAGA!")    If odp = vbYes Then

     ZapSQL = "DELETE FROM Pracownicy "& _

              "WHERE Id_prac=" & elem.Column(0,poz)      DoCmd.RunSQL ZapSQL

  End If Next poz

elem.Requery Koniec:

   Exit Sub

Obsługa_błędów:

   MsgBox Err.Description    Resume Koniec

End Sub

Zauważmy, w jaki sposób na zmiennej ZapSQL jest tworzona instrukcja SQL do wykonania – przez wstawienie konkretnej wartości liczbowej elem.Column(0,poz) do warunku WHERE.

(42)

42 opr. Lech Banachowski, Jan Wierzbicki

DoCmd - obiekt reprezentujący polecenie.

MsgBox - instrukcja wyświetlająca komunikat.

Err - obiekt reprezentujący informację o zaistniałym błędzie w czasie wykonywania kodu VBA.

parametry procedury zdarzenia - umożliwiają przekazywanie danych między procedurą a środowiskiem wykonawczym np.

Cancel - anuluj zdarzenie i Response - sposób reakcji na zdarzenie.

RunSQL - metoda obiektu DoCmd służąca do wykonywania instrukcji SQL.

wybór wielokrotny - możliwość wielokrotnego wyboru z listy.

(43)

43

Koniec wykładu XI

Cytaty

Powiązane dokumenty

tabeli; albo określa się wartości z innych pól w bazie danych albo bezpośrednio podaje się dopuszczalne wartości. indeks - struktura danych określana dla pola lub zbioru

• identyfikujący – do identyfikacji egzemplarza encji po stronie wiele jest potrzebny odpowiadający mu egzemplarz encji po stronie jeden i wtedy encja po stronie wiele nazywa

W każdym obiekcie klasy Film występuje atrybut obsada, którego wartością jest zbiór referencji do obiektów klasy Gwiazda (na podstawie obiektu klasy Film można uzyskać

200 Bazy danych Boks.. Schemat relacji jest w postaci normalnej Boyce’a-Codda bo jedynym kluczem są wszystkie trzy atrybuty) a w tabeli jest redundancja i możliwe są anomalie.

Podstawowym obiektem interfejsu użytkownika jest formularz, wyświetlany na ekranie komputera i składający się ze zbioru elementów dialogowych takich jak: pola do wyświetlania

W przypadku raportów i stron dostępu do danych główną metodą wprowadzenia wewnętrznej struktury jest grupowanie po wartościach pochodzących z jednej lub więcej kolumn. W wyniku

Źródło danych: Kwerenda Wszystko (złączenie tabel Firmy, Oferty, Stanowiska w ofercie, Wymagania, Słownik wymagań i Kategorie wymagań) dla głównego formularza (tu wyszukuje

SELECT Nazwa, Cena, Id_faktury, Ilosc FROM Towary INNER JOIN Pozycje ON Towary.Id_towaru = Pozycje.Id_towaru;... Wyświetl pracowników razem z przyjętymi przez