Jan Aleksander Wierzbicki Bazy Danych wykład VII Jan Aleksander Wierzbicki
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
USTAWIENIE „FOCUSU” NA DANYM POLU Sub Przycisk4_Click () On Error GoTo Err_Przycisk4_Click DoCmd GoToRecord , , A_NEWREC wydawnictwo.SetFocus Exit_Przycisk4_Click: Exit Sub Err_Przycisk4_Click: MsgBox Error$ Resume Exit_Przycisk4_Click End Sub nowy rekord aktywne pole
WŁĄCZENIE MOŻLIWOŚCI WYKONYWANIA EDYCJI DANYCH W FORMULARZU Sub EDYTUJ_Click () Me.AllowEdits = True End Sub -------------------------------------------------------------------- WYŁĄCZENIE MOŻLIWOŚCI WYKONYWANIA EDYCJI DANYCH W FORMULARZU Me.Allow Edits = False MsgBox "Koniec" zmienna logiczna
PROCEDURA OBSŁUGI ZINTEGROWANEGO PRZYCISKU UMOŻLIWIAJĄCEGO WŁĄCZENIE I WYŁĄCZENIE MOŻLIWOŚCI EDYCJI DANYCH FORMULARZA Private Sub p1_Click() If Me.AllowEdits = False Then p1.Caption = "koniec edycji" Me.AllowEdits = True Else p1.Caption = "edycja" DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Me.AllowEdits = False End If End Sub tytuł przycisku zapisanie rekordu
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
{do formularza - zdarzenie przed aktualizacją} 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 Sub możliwość wyboru: akceptacji lub anulowania jeśli wybrane Anuluj, następuje powrót - ponowna możliwość wpisania ceny
{do pola cena - zdarzenie po aktualizacji} Sub cena_AfterUpdate () PROCEDURA wypełniająca automatycznie pole „NUMER WYDANIA” 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 [numer wydania] = 2 Case Is > 100 [numer wydania] = 3 End Select End Sub wpisywana wartość jest warunkowana od zadanego przypadku
podformularz ma dane związane z formularzem głównym Formularz – podformularz (wyskakujący) formularz główny podformularz ma dane związane z formularzem głównym
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: MsgBox Err.Description Resume Exit_uczniow_Click End Sub formularz główny zmienna globalna przypisanie wartości zmiennej globalnej
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 podformularz wczytanie wartości ze zmiennej globalnej
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
FUNKCJA LICZĄCA PIERWIASTEK Function pierw() As Double Function pierw() 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
Graf formularzy i raportów formularz startowy - rozprowadzający formularz I formularz II raport I formularz III raport II
Koniec wykładu VII