• Nie Znaleziono Wyników

Relacyjne Bazy Danych

N/A
N/A
Protected

Academic year: 2021

Share "Relacyjne Bazy Danych"

Copied!
54
0
0

Pełen tekst

(1)

Relacyjne Bazy Danych

wykład X

(2)

Język aplikacji baz danych – Visual Basic

Zostaną wprowadzone podstawowe pojęcia

takie jak procedura, moduł, moduł klasy,

zdarzenie i obsługa błędów.

(3)

Procedury

Procedury są podstawą programowania aplikacji bazodanowych MS Access w ramach paradygmatu programowania

zdarzeniowego. Oto ich cechy:

•Są często wiązane ze zdarzeniami interfejsu użytkownika jak:

•naciśnięcie przycisku na formularzu,

•zmiana wartości w polu tekstowym formularza,

•otwarcie lub zamknięcie formularza,

•drukowanie raportu,

•początkowe otwarcie bazy danych, itd.

•Każda powtarzająca się rutynowa czynność, w szczególności

każda, którą można wykonać za pomocą opcji znajdujących się

we wbudowanych menu, nadaje się do zautomatyzowania za

(4)

Na formularzu można umieścić zbiór przycisków, po których naciśnięciu użytkownik uzyskuje:

•wyświetlenie tekstu pomocy;

•wyświetlenie innego formularza;

•zamknięcie danego formularza;

•wydrukowanie zawartości formularza;

•wyświetlenie następnego (poprzedniego) rekordu, przejście do pierwszego, ostatniego lub nowego rekordu;

•wykonanie obliczeń i wyświetlenie wyniku w polu niezwiązanym;

•wykonanie kopii zabezpieczającej bazy danych na dyskietkę;

•przeniesienie danych do Worda, Excela lub innej bazy danych.

(5)

Visual Basic for Applications (w skrócie VBA) jest

językiem programowania dla aplikacji systemu Microsoft Office będący podzbiorem języka Visual Basic. Oto jego cechy:

•służy do powiązania obiektów bazy danych w jedną spójną aplikację;

•zawiera standardowe konstrukcje programistyczne jak If ...

Then ... Else, For, Case, procedury, zmienne;

•stosuje dwa typy procedur:

•funkcje (Function) - zwracające wartość; mogą być używane w wyrażeniach jak również jako wartości właściwości zdarzeń;

•podprogramy (Sub) - nie zwracające bezpośrednio

(6)

Moduł jest zbiorem deklaracji i definicji procedur języka VBA przechowywanych razem jako całość.

•Moduł może zawierać zarówno procedury zdarzeń jak i zwykłe nazwane procedury.

•Są dwa rodzaje modułów:

•moduły klas w tym:

• moduły klas obiektów MS Access jak formularze i raporty,

• moduły klas definiujące niezależne obiekty.

•moduły ogólne - nie związane z żadnym obiektem.

•Procedury typu Public mogą być wywoływane w dowolnym miejscu aplikacji (opcja domyślna).

•Procedury typu Private są prywatne dla danego modułu (w tym

modułu formularza i raportu) - nie można ich używać spoza

(7)

Typy zmiennych:

•lokalne dla procedury, deklarowane lokalnie w procedurze jako Dim,

•lokalne dla modułu, deklarowane jako Private w module (opcja domyślna),

•globalne, deklarowane jako Public w module - dostęp do

nich jest możliwy w całej aplikacji.

(8)

Typy danych dla zmiennych

Access Visual Basic Wartość domyślna

Text String ""

Number Integer, Single Long, Double, 0

Currency Currency 0

Yes/No Boolean False

Date/Time Date 30.12.1899

Specjalny typ danych Visual Basic - Variant - oznacza dowolny

typ wartości.

(9)

Domyślnie wszystkie argumenty przy wywoływaniu procedury są przekazywane metodą przez referencję.

Dzięki temu w kodzie procedury operujemy na rzeczywistej zmiennej, którą przekazujemy jako parametr.

Alternatywnie można przekazywać argument przy wywoływaniu procedury metodą przez wartość –

poprzedzając w deklaracji procedury nazwę parametru słowem kluczowym ByVal. Przy wywołaniu oblicza się

wartość argumentu i przekazuje do kodu procedury właśnie tę wartość. Jeśli argumentem jest zmienna, wartość tej

zmiennej nie ulega zmianie przy wykonywaniu kodu.

(10)

Przykład 1

Typowym zadaniem programistycznym jest obliczanie pierwiastka kwadratowego z liczby nieujemnej. Oto jego zapis w postaci funkcji Visual Basic.

Function SquareRoot (X As Double) As Double Dim Msg As String

Select Case Sgn(X) ' Oblicz znak argumentu.

Case 1 ' OK jeśli dodatni.

SquareRoot = Sqr(X) Exit Function

Case 0 ' Powiadom użytkownika jeśli 0.

Msg = "Przekazana wartość to 0."

Case -1 ' Powiadom użytkownika jeśli mniejsze niz 0.

Msg = "Niedozwolona liczba."

End Select

(11)

Przykład 2

Pokażemy na tym przykładzie deklaracje i definicje modułu.

Opcje:

•Option Compare Database - użycie metody z bazy danych w porównaniach;

•Option Explicit - wymagane jest deklarowanie zmiennych;

są zwykle domyślnie przyjmowane przez system.

(12)

Option Compare Database Option Explicit

---

Private licznik As Integer 'Zmienna lokalna Public pokaż As Integer 'Zmienna globalna ---

Sub Zeruj() 'Procedura globalna licznik = 0

pokaż = licznik End Sub

---

Sub Dodaj() 'Procedura globalna licznik = licznik + 1

pokaż = licznik

MsgBox licznik, , "LICZNIK"

(13)

W MS Access jest dostęny edytor kodu Visual Basic (Visual Basic Editor) – zawierający środowisko uruchamiania kodu VBA.

Okno analizy programu (Immediate Window) – uruchamiane przez sekwencję klawiszy CTRL-G lub z menu Widok "View -> Immediate Window" - daje możliwość wykonywania kodu (instrukcji, metod, funkcji i procedur) oraz sprawdzania

wartości wyrażeń, pól i właściwości – pisząc w pojedynczym wierszu np.

? Licznik

gdzie licznik jest zmienną, której wartość chcemy wypisać.

(14)

•Jest możliwość przerwania działania funkcji lub procedury przez ustawienie w kodzie punktu przerwania (breakpoint) – "Debug ->

Toggle Breakpoint" (F9).

• Można też wyświetlić - z menu Widok (View):

•nawigator po klasach bieżącego projektu (Project Explorer) oraz

•nawigator po klasach zarejestrowanych bibliotek jak Access, VBA (Object Browser).

Na ogół jednej klasie odpowiada dokładnie jeden obiekt tej klasy

(obiekt klasy – class object).

(15)

Przykład 3

Sprawdzanie, czy dany formularz jest otwarty w widoku Formularz - rozwiązanie używające standardowej funkcji SysCmd.

Function Otwarty(ByVal Mój As String) As Integer ' SysCmd - czy formularz jest otwarty

Otwarty = False

If SysCmd(acSysCmdGetObjectState,acForm,Mój) <> 0 Then

' CurrentView - czy jest otwarty w widoku Formularz

If Forms(Mój).CurrentView <> 0 Then Otwarty = True End If

End Function

(16)

Zwróćmy uwagę na to, że odróżniamy klasę danego formularza łącznie z arkuszem jego właściwości od konkretnych jego wcieleń widocznych na ekranie, na których możemy wykonywać operacje w kodzie VBA.

Wcielenie to nazywamy obiektem danego formularza lub w skrócie po prostu formularzem. Możemy więc powiedzieć, że otwarte formularze są obiektami klas swoich formularzy.

Do obiektu formularza o nazwie Pracownicy można się odwoływać w następujący sposób:

•Forms![Pracownicy]

•Forms("Pracownicy")

•Forms(numer) gdzie numer jest numerem

przyporządkowanym danemu formularzowi w sesji.

(17)

Używając dostępu kropkowego możemy odwoływać się do właściwości obiektu formularza a także do jego metod np.

•Forms![Pracownicy].Caption zwraca tytuł formularza,

•Forms![Pracownicy].SetFocus jest metodą, której wykonanie przenosi fokus do tego formularza.

Wykrzyknik ! oznacza wybór elementu z kolekcji. Np.

•Forms![Pracownicy] - wybór formularza z kolekcji wszystkich formularzy,

•Forms![Pracownicy]![Nazwisko] - wybór pola Nazwisko z

kolekcji wszystkich obiektów związanych z formularzem

Pracownicy.

(18)

PROCEDURA ZAMYKAJĄCA AUTOMATYCZNIE PRZY ZAMYKANIU DANEGO FORMULARZA DRUGI

OTWARTY FORMULARZ, np. formularz Książki Private Sub Form_Close()

If SysCmd(acSysCmdGetObjectState, acForm, "KSIAZKI") <> 0 Then

DoCmd.Close acForm, "KSIAZKI"

End If End Sub

sprawdza czy dany formularz

jest otwarty

(19)

Reasumując:

•wykrzyknik oznacza wybór elementu z kolekcji elementów,

•kropka oznacza wybór właściwości obiektu lub kolekcji.

Zapis Forms![Pracownicy]![Nazwisko] oznacza także domyślnie wartość pola tekstowego Nazwisko czyli

konkretne nazwisko – alternatywnie można używać pełnej notacji:

Forms![Pracownicy]![Nazwisko].Value

Przy wpisywaniu do pola tekstowego lub listowego,

bieżącą wartość – jeszcze nie zapisaną do bazy danych –

uzyskuje się przy użyciu:

(20)

Przy odczytywaniu wartości atrybutu Text fokus (bieżący kursor) musi znajdować się na danym polu:

[Nazwisko].SetFocus

MsgBox "Nazwisko = "&[Nazwisko].Text

(21)

Sprawdzenie czy formularz jest otwarty (w widoku Projekt lub Formularz) można zrealizować jeszcze w inny

sposób – przeglądając kolekcję wszystkich otwartych formularzy i sprawdzając ich nazwy.

Function Otwarty1 (ByVal Mój As String) As Integer ' Zwraca True, jeśli podany formularz jest otwarty w widoku projekt lub formularz.

Dim I As Integer Otwarty1 = False

' Forms.Count to liczba obiektów w kolekcji Forms For I = 0 To Forms.Count - 1

If Forms(I).Name = Mój Then Otwarty1 = True

Exit For

(22)

Jest możliwość tworzenia instancji klasy formularza w kodzie VBA:

Dim Kopia As New Form_Osoby

i wykonywanie na niej operacji jak na obiekcie. Instancja

ta nie jest widoczna na ekranie.

(23)

Przykład 4

Kolejna procedura specyfikuje reakcję na zdarzenie

naciśnięcia lewego przycisku myszy (obiekt: przycisk Witaj, zdarzenie: Przy kliknięciu).

Private Sub Witaj_Click()

[Pole] = "Witaj w klubie VBA"

End Sub

(24)

Przykład 5

Zwróćmy uwagę na procedurę, jaką tworzy kreator przycisków w celu zrealizowania zadania otwarcia formularza o nazwie Osoby:

Private Sub Przycisk_Click()

On Error GoTo Err_Przycisk_Click Dim stDocName As String

Dim stLinkCriteria As String stDocName = "Osoby"

DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Przycisk_Click:

Exit Sub

Err_Przycisk_Click:

MsgBox Err.Description

Resume Exit_Przycisk_Click

(25)

•Instrukcja DoCmd.OpenForm "Osoby" zawierająca wywołanie metody OpenForm wbudowanego obiektu o nazwie DoCmd, powoduje otwarcie formularza Osoby.

•W procedurze tej występuje obsługa błędów. Kreator przycisków tworząc procedurę zdarzenia Przy kliknięciu standardowo

realizuje następującą strategię:

•W przypadku wystąpienia błędu - to jest niemożliwości otwarcia formularza Osoby - przerwij obliczenia i przejdź do sekcji obsługi błędów przy etykiecie Err_Przycisk_Click.

•Wypisz informację o błędzie korzystając z metody Description specjalnego obiektu Err.

•Zakończ wykonywanie procedury.

(26)

W opisanej procedurze można byłoby standardowy tekst błędu Err.Description zastąpić własnym tekstem

skierowanym do użytkownika aplikacji:

MsgBox "Błąd aplikacji. Skontaktuj się z administratorem

aplikacji"

(27)

Korzystając z obsługi błędów napiszmy funkcję sprawdzającą czy formularz o nazwie będącej argumentem procedury jest otwarty (w widoku Projekt lub Formularz).

Function czy(ByVal formularz As String) As Boolean On Error GoTo Nie

Dim s As String

s = Forms(formularz).Name czy = True

Exit Function

Nie:

(28)

Synchronizacja dwóch formularzy Przykład 6

Otwarcie formularza może być bardziej skomplikowane, aby mogło wystarczyć użycie samego kreatora przycisków np.

procedura otwierająca formularz Uczestnictwo w projektach w

oparciu o wartość znajdującą się w polu Numer będącym częścią

podformularza przy czym sam przycisk Projekty znajduje się w

głównym formularzu Departament.

(29)

Procedura otwiera formularz Uczestnictwo w projektach w celu pokazania uczestnictwa w projektach wybranej aktualnie osoby (w podformularzu):

Private Sub Projekty_Click()

On Error GoTo Err_Projekty_Click Dim stDocName As String

Dim stLinkCriteria As String

stDocName = "Uczestnictwo w projektach"

stLinkCriteria = "Numer=Forms![Departament]![Osoba Subform].Form![Numer]"

DoCmd.OpenForm stDocName, , , stLinkCriteria Forms![Departament].SetFocus

Forms![Departament]![Osoba Subform].SetFocus Exit_Projekty_Click:

Exit Sub

Err_Projekty_Click:

(30)

Przykład 7

Formularz wyskakujący Uczestnictwo w projektach powinien pokazywać dane o aktualnie rozpatrywanym pracowniku z

podformularza w formularzu Departament. Uaktualnienie wartości następuje przy pojawieniu się nowego rekordu w

podformularzu czyli jako reakcja na zdarzenie Przy bieżącym.

Przy czym to uaktualnienie ma sens, tylko wtedy gdy użytkownik wcześniej otworzył formularz wyskakujący Uczestnictwo w

projektach naciskając przycisk Projekty. Z kolei naciśnięcie

przycisku Projekty ma sens tylko wtedy, gdy pole Numer w

podformularzu jest niepuste.

(31)

W procedurze występują dwie nowe właściwości, których wartościami są obiekty:

•Me – formularz lub raport, którego procedura jest wykonywana;

•Parent – formularz lub raport nadrzędny względem

danego formularza lub raportu.

(32)

Private Sub Form_Current()

On Error GoTo Err_Form_Current If IsNull(Me![Numer]) Then

Me.Parent![Projekty].Enabled = False Else

Me.Parent![Projekty].Enabled = True

If Otwarty("Uczestnictwo w projektach") Then Dim Projekt As String

Projekt = "[Numer]="& Me![Numer]

DoCmd.OpenForm "Uczestnictwo w projektach", , , Projekt Forms![Departament].SetFocus

Forms![Departament]![Osoba Subform].SetFocus End If

End If

Exit_Form_Current:

Exit Sub

Err_Form_Current:

MsgBox Err.Description

(33)

Uaktualnienie formularza wyskakującego jest konieczne nie tylko, gdy fokus w podformularzu przejdzie do nowego

rekordu, ale również gdy w bieżącym rekordzie zmieni się wartość pola Numer.

Realizuje to procedura zdarzenia Po aktualizacji dla pola

Numer - jej kod jest analogiczny do procedury zdarzenia Przy

bieżącym.

(34)

Utwórzmy dwie tabele Instytucje i Pracownicy połączone związkiem jeden do wiele.

Każda instytucja zatrudnia wielu pracowników; każdy pracownik jest zatrudniony w jednej instytucji. Utwórzmy dwa formularze: „Instytucja”, na którym są wyświetlane dane o instytucjach, oraz „Pracownicy” na którym są wyświetlane dane o pracownikach. Chcemy, aby na życzenie użytkownika poprzez naciśnięcie przycisku

„Pracownicy instytucji” na formularzu „Instytucja” otwierał się formularz wyświetlający pracowników danej instytucji.

Chcemy aby przy chodzeniu po rekordach formularza

„Instytucja” aktualizowały się dane o pracownikach

zatrudnionych w danej instytucji – oczywiście o ile

(35)

Private Sub PracownicyInstytucji_Click() On Error GoTo Form_Current_Err

Dim Ins As String

Ins = "Id_inst=Forms![Instytucje]!Id"

DoCmd.OpenForm "Pracownicy",,,Ins Form_Current_Exit:

Exit Sub

Form_Current_Err:

MsgBox Err.Description

Resume Form_Current_Exit

End Sub

(36)

Sub Form_Current()

On Error GoTo Form_Current_Exit Dim s As String

s = Forms("Pracownicy").Name On Error GoTo Form_Current_Err Dim Ins As String

Ins = "Id_inst=Forms![Instytucje]!Id"

DoCmd.OpenForm "Pracownicy",,,Ins Form_Current_Exit:

Exit Sub

Form_Current_Err:

MsgBox Error$

Resume Form_Current_Exit

(37)

Czy rozwiązanie umożliwia wprowadzanie pracowników do otwieranego z formularza Instytucje formularza Pracownicy?

Private Sub Form_BeforeInsert(Cancel As Integer) On Error GoTo Form_Current_Exit

Dim num As Integer

num = Forms("Instytucje").id

On Error GoTo Form_Current_Err Id_inst = num

Form_Current_Exit:

Exit Sub

Form_Current_Err:

MsgBox Err.Description

(38)

Formularz – podformularz (wyskakujący)

formularz główny

podformularz

ma dane związane

z formularzem głównym

(39)

PROCEDURY UMOŻLIWIAJĄCE KOPIOWANIE KLUCZA GŁÓWNEGO DO PODFORMULARZA WYSKAKUJĄCEGO PRZY DOPISYWANIU DANYCH Option Compare Database

Option Explicit

Public klas As String

___________________________________________

Private Sub uczniow_Click()

On Error GoTo Err_uczniow_Click Dim stDocName As String

Dim stLinkCriteria As String stDocName = "uczniowie_pdf"

klas = Me![id_klasy]

stLinkCriteria = "[id_klasa]=" & Me![id_klasy]

DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_uczniow_Click:

Exit Sub

Err_uczniow_Click:

zmienna globalna

przypisanie wartości zmiennej globalnej

formularz główny

(40)

Private Sub nowy_rec_Click()

On Error GoTo Err_nowy_rec_Click

DoCmd.GoToRecord , , acNewRec [id_klasa] = Form_klasa_gl.klas Exit_nowy_rec_Click:

Exit Sub

Err_nowy_rec_Click:

MsgBox Err.Description

Resume Exit_nowy_rec_Click

End Sub

wczytanie wartości ze zmiennej globalnej podformularz

(41)

Zdarzenia

Rozważymy kolejno zdarzenia dla obiektów interfejsu

użytkownika (formularzy, raportów, elementów dialogowych) - które najczęściej są oprogramowywane przy pomocy procedur zdarzeń.

• Przy otwarciu - Open (formularza, raportu) - po otwarciu

formularza (raportu) ale przed wyświetleniem pierwszego rekordu (przed zdarzeniem Load). Można:

•zamknąć inne okno,

•ustawić fokus na konkretnym elemencie,

•spytać użytkownika jakie rekordy mają się pojawić na formularzu,

•spytać użytkownika o wymagane hasło i odwołać otwieranie

(42)

Private Sub Form_Open(Cancel As Integer) Dim strPass as String

strPass = InputBox("Podaj hasło: ") If strPass<>"KochamVB" Then

MsgBox "Niepoprawne hasło"

Cancel = True End If

End Sub

(43)

Przy załadowaniu - Load (formularza) - po otwarciu formularza i wyświetleniu jego rekordów:

•określa się domyślne ustawienia dla elementów formularza,

•wyświetla się okienka informacyjne oraz pola wyliczane w oparciu o inne dane na formularzu.

Private Sub Form_Load() Dim StrName As String

MsgBox "Formularz za chwilę pojawi się na ekranie!"

End Sub

(44)

Przy bieżącym - Current (formularza) - przy pojawieniu się pierwszego i każdego kolejnego rekordu (przy nawigacji po rekordach), również przy usuwaniu rekordu i po odświeżeniu formularza. Można:

•wyświetlać komunikat przy przejściu do nowego rekordu,

•wyświetlać powiązane informacje,

•zmieniać właściwości elementów np. chowając lub

odkrywając pewne elementy lub zmieniając wyświetlony tytuł Caption na formularzu.

Private Sub Form_Current()

Forms!Pracownik.Caption = Me![Nazwisko]

(45)

Przy usunięciu - Delete (formularza) - moment zanim rekord zostanie usunięty.

•Można uzyskać potwierdzenie, że naprawdę chodzi użytkownikowi o usunięcie bieżącego rekordu.

Private Sub Form_Delete(Cancel As Integer)

If MsgBox("Czy na pewno usunąć?", vbYesNo) = vbNo Then Cancel = True

End Sub

(46)

•Przy zwolnieniu - Unload (formularza) - można:

•uzyskać potwierdzenie, że naprawdę chodzi użytkownikowi o zamknięcie formularza,

•wykonać dodatkowe akcje jak zapisanie informacji do dziennika (logu).

•Przy zamknięciu - Close (formularza, raportu) - po zamknięciu formularza (raportu) i usunięciu go z ekranu.

•Można użyć metody OpenForm aby otworzyć kolejny formularz.

•Po wstawieniu - After Insert (formularza) - po dodaniu nowego rekordu do bazy danych.

•Jest możliwość odświeżenia danych.

•Przed aktualizacją - BeforeUpdate (formularza, elementu

dialogowego)

(47)

Po aktualizacji - AfterUpdate (formularza, elementu dialogowego) - po aktualizacji zmienionych danych w rekordzie lub elemencie dialogowym. Można:

•zastosować filtr,

•odświeżyć dane.

Przy kliknięciu - Click (formularza, elementu dialogowego) - przy naciśnięciu i zwolnieniu lewego przycisku myszy. Np.

naciśnięcie przycisku.

Private Sub cmdClickMe_Click()

MsgBox "Czego chcesz ode mnie?"

(48)

Przy naciśniętym klawiszu - KeyPress - gdy wprowadza się znak przez naciśnięcia klawisza. Można sprawdzić ten

znak, ewentualnie całą zawartość pola dostępną na atrybucie Text - bez tego ostatniego znaku.

Uzyskanie fokusu - GotFocus - gdy element uzyskuje fokus. Element musi być widoczny (visible) i włączony (enabled). Np.

•ustawienie etykiety dla pola tekstowego:

Private Sub Nazwisko_GotFocus()

[lblNazwisko].Caption = "Rozpatrywany w tej chwili klient"

End Sub

(49)

Opuszczanie elementu dialogowego tworzą zdarzenia:

Przed aktualizacją - BeforeUpdate, Po aktualizacji -

AfterUpdate, Wyjście - Exit, Utrata fokusu - LostFocus.

Używa się do:

• weryfikacji wprowadzonych danych (w wymienionych zdarzeniach oba atrybuty Text i Value mają już tę samą wartość),

• zmiany ustawień dla opuszczanego pola.

Private Sub txtPass_Exit(Cancel As Integer) If Len(txtPass) < 8 Then

MsgBox "Podaj 8 lub więcej znaków."

Cancel = True

(50)

bez wstrzymywania wyjścia:

Private Sub txtPass_LostFocus() If Len(txtPass) < 8 Then

MsgBox "Podaj 8 lub więcej znaków."

End If

End Sub

(51)

Funkcja DLookUp

Funkcja DLookUp umożliwia sprowadzenie z bazy danych pojedynczej wartości. Np.

•jeśli w formularzu Osoba opartym na tabeli Osoba jest potrzebna nazwa departamentu zapisana w tabeli Departament, to można dodać pole wyliczane:

=DLookUp("[Nazwa]";"[Departament]";"[Id]=Forms![Osoba]![Id]")

Ten sam efekt można byłoby uzyskać opierając formularz na

(52)

Za pomocą funkcji DLookUp można do pola formularza wprowadzać wartości obliczane przez kwerendę

wybierającą - wystarczy najpierw zdefiniować taką kwerendę np.

Zap_max jako

SELECT IIf(IsNull(Max([Numer])),1,Max([Numer])+1) AS Maks FROM Osoba;

a następnie użyć kwerendy jako źródła dla pola na formularzu:

=DLookUp("[Maks]"; "Zap_max")

Metodę tę można zastosować więc do generowania

jednoznacznych numerów dla kluczy.

(53)

procedura - podstawowa jednostka kodu języka

programowania Visual Basic for Applications (VBA). Są dwa rodzaje procedur: podprogramy (Sub) i funkcje (Function).

moduł - zbiór deklaracji i definicji procedur języka VBA przechowywanych razem jako całość. Są dwa rodzaje modułów: moduły klas obiektów i moduły ogólne.

zdarzenie - sytuacja jaka może wystąpić w trakcie realizacji aplikacji, dla której programista może przygotować

specjalną obsługę np. w postaci procedury zdarzenia.

DLookUp - funkcja DLookUp umożliwia sprowadzenie z

bazy danych pojedynczej wartości lub wykonanie zapytania

(54)

Koniec wykładu X

Cytaty

Powiązane dokumenty

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

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,

Recordset - obiekt reprezentujący cały zbiór rekordów z tabeli w bazie danych lub z wyniku zapytania na tabelach bazy danych. W danej chwili dostęp jest tylko do jednego