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

 

 

Otwieranie formularza kodem VBA

Jedną z najczęściej wykorzystywanych metod obiektu docmd jest docmd.OpenForm. Metoda ta służy do otwierania formularza.

kliknij, aby powiększyć

Parametry to:

    • FormName – nazwa otwieranego formularza . Parametr obowiązkowy;
    • View as acFormView – tryb otwierania otwierania formularza, wartość domyślna to acViewNormal czyli po prostu wygląd formularza;
      kliknij, aby powiększyć
    • FilterName  – nazwa zdefiniowanego filtru do zastosowania przy wyborze rekordów do wyświetlenia w formularzu; argument opcjonalny;
    • WhereCondition – instrukcja SQL (bez słowa kluczowego WHERE) decydująca o tym, które rekordy mają zostać wyświetlone; argument opcjonalny;
    • DataMode  – tryb dostępu do danych:

      kliknij, aby powiększyć

      dostępne opcje to:

        • acFormAdd – tryb dodawania danych (nowy rekord)
        • acFormEdit – tryb edycji danych bez możliwości wstawiania nowych rekordów
        • acFormPropertySettings– tryb uzależniony od właściwości otwieranego formularza – wartość domyślna
        • acFormReadOnly– tryb odczytywania danych, bez możliwości edycji i dodawania/usuwania danych
      • WindowMode  – tryb okna otwieranego formularza:

        kliknij, aby powiększyć

        dostępne opcje to:

          • acDialog – tryb dialogu, przestawia całe sterowanie na otwierany formularz, blokując inne
          • acHidden– tryb otwarcia formularza i ukrycia go
          • acIcon– tryb otwarcia formularza i zminimalizowania go
          • acWindowNormal– tryb otwarcia zgodny z właściwościami otwieranego formularza,
            wartość domyślna
      • OpenArgs– argument otwarcia, przekazujący w razie potrzeby określoną wartość do otwieranego formularza.,
        argument opcjonalny

Metoda OpenForm ma faktycznie dużo możliwości wykorzystania, wszystko w zależności od potrzeb i struktury aplikacji.
W praktyce – nie ma aplikacji Access, w której nie stosowałabym tej metody. Korzystam też z ostatniego parametru czyli OpenArgs. Najczęściej za jego pomocą przekazuję do formularza podrzędnego numeru ID z tabeli nadrzędnej, choć czasami za jego pomocą przekazuję tez np.Login aktualnego użytkownika.
Sprawdza się. 


 

Egzamin Specjalista MS Access

Zamykanie Accessa

Metoda obiektu docmd Quit służy do zamknięcia bazy danych i wyjścia z Accessa.
Metoda Docmd.Quit ma jeden argument opcjonalny, który może przybierać jedną z trzech opcji:

    • acQuitPrompt – z monitem o zapis zmian
    • acQuitSaveAll – zapisuje wszystkie zmiany (wartość domyślna)
    • acQuitSaveNone – bez zapisu wszystkich zmian
kliknij, aby powiększyć

Często stosuję tę metodę do szybkiego zamykania Accessa z różnych miejsc bazy danych.


Kurs Access - programowanie w VBA

 

Zamykanie bazy danych

Do zamykania bazy danych kodem VBA służy metoda docmd CloseDatabase.
Metoda Docmd.CloseDatabase nie ma żadnych argumentów – zamyka po prostu aktywną bazę danych.
Jakoś nie przypominam sobie, żeby w swoich projektach kiedyś stosowała tę metodę.


Kurs Access - programowanie w VBA