Odświeżanie rekordu

Do odświeżania rekordów w bazie danych służy metoda obiektu docmd RefreshRecord
Metoda ta ma szczególne znaczenie w przypadku edycji danych za pomocą formularza, w którym jednocześnie mogą pracować inni użytkownicy albo w wyniku makr/procedur VBA. Powoduje ona zapisanie rekordu i odświeżenie danych w formularzu.

W praktycznym zastosowaniu – wykorzystuję je najczęściej w formularzach ciągłych. Szczególnie wtedy, gdy w ramach jednego rekordu np. w jednym polu zmieniam dane bezpośrednio, a w innej kolumnie tego samego rekordu za pomocą procedury VBA. Wówczas na ekranie pojawia się komunikat o konflikcie zapisu.

kliknij, aby powiększyć

Jeżeli jednak do pól formularza dodamy zdarzenie po aktualizacji:

Private Sub NazwaPola_AfterUpdate()
DoCmd.RefreshRecord
End Sub

wówczas konflikt się nie pojawi.
W ten sposób zabezpieczymy się również przed takim konfliktem, gdy zmiany wprowadzi jednocześnie inny użytkownik.

Polecam do praktycznego wykorzystania.


 

Egzamin Specjalista MS Access

Formularz modalny

Formularz modalny to formularz, z którego nie da się przenieść fokusa na inny obiekt przed jego zamknięciem. 
Ustawienie formularza jako modalny dostępne jest w Arkuszu właściwości, w zakładce Inne.

kliknij, aby powiększyć

Po otwarciu formularza modalnego, nawet jeżeli jednocześnie jest otwartych kilka formularzy czy raportów, nie można się do nich przełączyć, fokus pozostaje zawsze przy tym modalnym. Choć oczywiście można z niego (za pomocą przycisku lub zdarzenia) otworzyć inny formularz – po zamknięciu go, fokus wraca do naszego formularza modalnego.

W swoich projektach bardzo często korzystam z formularzy modalnych. Wykorzystuję je najczęściej do dodawania nowych rekordów do tabeli. W ten sposób mam większą kontrolę nad tym, czy wszystkie dane zostały wprowadzone, w razie potrzeby wyświetlany jest komunikat i możliwość korekty. Finalnie do tabeli nie trafiają śmieci.

Przykład takiego formularza:

Zamknięcie formularza poprzez jeden z dwóch przycisków:

    • Anuluj – zamyka formularz bez zapisu danych
    • Zapisz – sprawdza dane, zapisuje je do tabeli i zamyka formularz

A jak zrobić to kodem VBA? Najprościej wykorzystać metodę Docmd.Openform w trybie acDialog.
Przykład kodu:

Private Sub PolecenieNowaKsiazka_Click()
DoCmd.OpenForm „NowaKsiazka”, , , , , acDialog
End Sub

 


Kurs Access - formularze i raporty