background image

Bazy Danych

wykład VII

Jan Aleksander Wierzbicki

background image

Interfejs użytkownika

• procedury zdarzeń (VBA)

– podstawowe można wykonywać 

przy użyciu kreatora

– bardziej zaawansowane – 

tworzymy „ręcznie” kod

• funkcje własne użytkownika

background image

Graf formularzy i 

raportów

formularz startowy

- rozprowadzający

formularz I

formularz II

raport I

formularz III

raport II

background image

Otwieranie formularza i raportu

DoCmd.OpenForm

 

nazwa_formularza[,widok][,nazwa_filtru]
[,warunek_WHERE] [,tryb_danych][,tryb_okna

Np. widok - acDataForm, acFormDS, 

tryb danych, okna - acFormReadOnly, 

acIcon

DoCmd.OpenReport

 

nazwa-raportu[,widok][,nazwa-filtru][,warunek-
WHERE
]

Chodzenie po rekordach formularza

 (rekord następny, poprzedni, pierwszy, ostatni, 
nowy)

 

DoCmd.GoToRecord

 , ,

 acFirst

 

(acPrevious

acNextacLastacNewRec)

background image

Zamykanie obiektów

 (np. Formularza)

DoCmd.Close

 

– bieżący,

DoCmd.Close

 acForm, „Ksiazki"

 – zadany

Uruchomienie kwerendy

DoCmd.OpenQuery

 

nazwa-kwerendy, acNormal, 

acEdit

 

Filtrowanie zawartości

 formularza 

DoCmd.ApplyFilter

 

, "[Rok wydania]>=Forms!

[Ksiazki]![Data]" 
[Data]

 – zadane pole tekstowe

DoCmd.ShowAllRecords

 

– wszystkie rekordy

background image

PROCEDURA ZAMYKAJĄCA AUTOMATYCZNIE 

PRZY ZAMYKANIU DANEGO FORMULARZA 

DRUGI OTWARTY FORMULARZ, np. formularz 

Książki

{do formularza - zdarzenie zamknięcie 
formularza}

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

background image

PROCEDURA SPRAWDZAJĄCA CZY SĄ 

WYPEŁNIONE POLA „WYDAWNICTWO” ORAZ 

„CENA”. 

Gdy pole wydawnictwo jest wypełnione, a pole cena 

nie, pojawia się komunikat z możliwością powrotu 

do wypełniania pola cena.

 

{do formularza - zdarzenie przed aktualizacją}

Sub Form_BeforeUpdate (cancel As Integer)
Dim komunikat As String
Dim opcja As Integer
Dim wybor As byte
 
If Not IsNull(wydawnictwo) And IsNull(cena) Then
komunikat = "Brak ceny"
opcja = vbquestion + vbokcancel
wybor = MsgBox(komunikat, opcja)
If wybor = vbcancel Then 
cena.SetFocus
cancel = True
End If 
End If
End Sub 

Możliwość wyboru:
akceptacji lub anulowania

Jeśli wybrane Anuluj, następuje powrót

- ponowna możliwość wpisania ceny

background image

PROCEDURA wypełniająca automatycznie 

pole „UWAGI” w zależności od wartości w 

polu „CENA”
 

{do pola cena - zdarzenie po aktualizacji}

Sub cena_AfterUpdate ()
 Select Case cena
 Case 50 To 100
 [uwagi] = ”tania”
 Case Is > 100
 [uwagi] = ”droga”
 End Select
End Sub 

Wpisywana wartość jest warunkowana

od zadanego przypadku

background image

Formularz – podformularz 

(wyskakujący)

formularz 

główny

podformularz

ma dane związane 

z formularzem 

głównym

background image

KOPIOWANIE WARTOŚCI ZADANEGO KLUCZA 

GŁÓWNEGO DO PODFORMULARZA 

WYSKAKUJĄCEGO (KLUCZ OBCY) PRZY 

DOPISYWANIU DANYCH

{do przycisku nowy rekord - zdarzenie kliknięcie}

Private Sub nrek_Click()
On Error GoTo Err_nrek_Click

    DoCmd.GoToRecord , , acNewRec
    [wydawnictwo] = Forms![wydawnictwo]![skrot]
Exit_nrek_Click:
    Exit Sub

Err_nrek_Click:
    MsgBox Err.Description
    Resume Exit_nrek_Click
End Sub

Przypisanie wartości 

dla klucza obcego

background image

Private Sub Form_Open(Cancel As Integer)
   Dim Haslo as String
   Haslo = InputBox("Podaj hasło: ")
   If Haslo <>”Bazy" Then
      MsgBox "Niepoprawne hasło"
      Cancel = True
   End If
End Sub 

Hasło na 

otwarcie

 formularza

Zdarzenie do formularza – 

Przy otwarciu

background image

Przy usunięciu

 

Zdarzenie do formularza – 

Przy usunięciu

Potwierdzenie, czy na pewno usunąć 
bieżący rekord 

Private Sub Form_Delete(Cancel As Integer)
If MsgBox("Czy na pewno usunąć?", vbYesNo) 
= vbNo    Then Cancel = True
End If
End Sub

background image

PROCEDURA dopisująca nowe wydawnictwo z 
poziomu formularza opartego na tabeli 
Ksiazki. 
Wartość pola Wydawnictwo (klucz obcy) jest 
wyświetlana poprzez pole kombi – zbudowany 
odnośnik.
 
 
 opcja 

Dane|Ogranicz do listy

 – włączona na 

TAK

{do pola kombi wydawnictwo 
 - zdarzenie przy wartości spoza listy}

background image

Private Sub WYDAWNICTWO_NotInList(

NewData

 

As String, 

Response

 As Integer)

Dim ctl As Control
Set ctl = Me![WYDAWNICTWO]

If MsgBox("Czy chcesz dodać nowe wydawnictwo?", 
vbYesNo, "UWAGA") = vbYes Then

DoCmd.RunSQL "INSERT INTO Wydawnictwa(skrót) 
VALUES('" & 

NewData

 & "')"

Response

 = acDataErrAdded

Else

Response

 = acDataErrContinue

ctl.Undo
End If | End Sub

Wartość wpisana do pola kombi

Okno komunikatu – wybór działania

Dodanie rekordu 

do tabeli 

Wydawnictwa

Cofnięcie wpisu, rekord 

nie  zostanie dodany

background image

FUNKCJA WYŚWIETLAJĄCA KOMUNIKAT
 
Option Compare Database   
'Użyj porządku bazy danych do porównania 
ciągów znakowych
 

Function

 komunikat()

MsgBox "Okno komunikatu!"
End Function

background image

FUNKCJA LICZĄCA PIERWIASTEK
 

Function

 pierw() As 

Double

Dim komunikat As String
Dim tytuł As String
Dim domyslnie As Integer
Dim wczytane As Double

Komunikat = "Podaj liczbę"  
Tytul = "Pierwiastek" 
Domyslnie = "1"      

wczytane = InputBox(Komunikat, Tytul, 
Domyslnie)
pierw = Sqr(wczytane)

MsgBox  "obliczony pierwiastek"
End Function

Wczytanie zadanej liczby

background image

Graf formularzy i 

raportów

formularz startowy

- rozprowadzający

formularz I

formularz II

raport I

formularz III

raport II

background image

Koniec wykładu VII


Document Outline