Zdarzenie „przy bieżącym” (Form_Current) jest uruchamiane zawsze po wyświetleniu rekordu, a więc po nawigacji po rekordach, jak również usunięciu i wstawieniu nowego. Dzięki temu nasz formularz będzie mógł automatycznie reagować na dane pojawiające się na formularzu.
Oprogramuj zdarzenie „przy bieżącym” tak, aby tło formularza zmieniało się w zależności od tego, czy wyświetlona aktualnie książka jest podręcznikiem.
If podrecznik.Value = -1 Then
Me.Detail.BackColor = &HA7DA4E
Else
Me.Detail.BackColor = &HCF7B79
End If
W wielu przykładach używaliśmy MsgBox aby uzyskać wyskakujące okienko informujące lub pytające użytkownika przy zajściu pewnych zdarzeń. Ogólna składnia MsgBox wygląda następująco:
MsgBox „Treść komunikatu”, Wygląd_okienka, „Tytuł okienka”
Treść to napis, który pojawi się w środku okienka. Tytuł pojawi się na górnej belce okienka. Wygląd określa, jakie przyciski pojawią się w okienku:
vbOKOnly, vbOKCancel, vbYesNoCancel, vbAbortRetryIgnore, vbYesNo, vbRetryCancel
oraz jaki będzie ogólny wygląd okienka (wykrzyknik, znak zapytania, itp.):
vbCritical, vbQuestion, vbExclamation, vbInformation
Możemy łączyć wartości z obu grup pisząc np.: vbYesNo + vbQuestion.
Możemy odebrać wartość zwróconą przez MsgBox. Dostępne wartości to:
vbAbort, vbCancel, vbIgnore, vbRetry, vbYes, vbNo, vbOK
Przykład:
If MsgBox(„Czy na pewno”, vbYesNo + vbQuestion, „Pytanie”) = vbYes Then ...
Dotychczas obsługiwaliśmy pola listy i pola combo, z których można było dokonać wyboru jednego tylko elementu. We właściwościach takiego pola można jednak ustawić możliwość wyboru więcej niż jednego elementu jednocześnie. Możemy obsłużyć np. przycisk, który przejrzy zaznaczone elementy i wykona dla nich jakąś akcję (np. usunięcie jak w poniższym przykładzie):
Private Sub Usun_Click()
Dim elem As Control, poz As Variant
Set elem = Me!Lista
For Each poz In elem.ItemsSelected
If MsgBox(„Czy na pewno usunąć”, vbYesNo, „UWAGA!”) = vbYes Then
DoCmd.RunSQL „DELETE FROM Pracownicy WHERE Id_prac=” & elem.Column(0,poz)
End If
Next poz
elem.Requery
End Sub
Istnieje możliwość przeglądania tabeli lub kwerendy z poziomu VB wiersz po wierszu. Służy do tego obiekt Recordset. Przykład użycia:
Set MojaBd = CurrentDb
Set MojeRekordy = MojaBd.OpenRecordSet(„Pracownicy”)
MojeRekordy.MoveFirst
Do Until MojeRekordy.EOF
If MojeRekordy!Tytul = „Sprzedawca” Then
MojeRekordy.Edit
MojeRekordy!Tytul = „Księgowy”
MojeRekordy.Update
End If
MojeRekordy.MoveNext
Loop
MojeRekordy.Close
W powyższym przykładzie w tabeli „Pracownicy” zostaną przejrzane wszystkie rekordy i tam, gdzie w polu tytuł znajdzie się napis „Sprzedawca”, zostanie zmieniony na „Księgowy”.
Funkcja DLookUp umożliwia sprowadzenie z bazy danych pojedynczej wartości. Przykład: Chcemy, aby przy wyświetlaniu książki w dodatkowym polu pojawiła się liczba książek tego samego autora. Przygotujemy najpierw kwerendę zwracającą liczbę książek dla każdego autora (grupujemy po IdAutora, wyświetlamy IdAutora oraz COUNT). W tym przykładzie kwerenda nazywa się „IleKsiazek”.
pole = DLookup("CountOfTytul", "IleKsiazek", "IdAutora=Forms!Ks!IdAutora")