Jak spowodować, aby np. formularz czy raport otwierał się w pełnym oknie ekranu? Możemy tu wykorzystać jedną z metod metod docmd – Maximize.
Stosuje się ją najczęściej przy otwarciu lub załadowaniu formularza.
kliknij, aby powiększyć
W ten sposób – aktywny formularz będzie widoczny w całym oknie Accessa.
Moim zdaniem – warto stosować.
Docmd.SearchForRecord to metoda obiektu docmd służąca do przechodzenia do wybranego rekordu formularza/raportu, tabeli czy kwerendy.
Najczęściej jest wykorzystywana w formularzach.
kliknij, aby powiekszyć
Parametry to:
ObjectType – typ obiektu: kliknij, aby powieszyć
wartością domyślną jest acActiveDataObject czyli aktywny obiekt (tzn.jeżeli uruchamiamy procedurę w formularzu, to ten formularz)
ObjectName – nazwa obiektu, argument opcjonalny
Record – rekord i kierunek wyszukiwania. Argument opcjonalny, możliwe opcje:
acFirst – pierwszy
acLast – ostatni
acNet – pierwszy
acPreview– ostatni
uwaga: nie działa tu acGoto – szczegóły: Błąd 2505.
WhereCondition – instrukcja SQL (bez słowa kluczowego WHERE) decydująca o tym, które rekordy mają zostać wyświetlone
Przykładowy kod:
Private Sub PolecenieSzukaj_Click()
DoCmd.SearchForRecord acDataForm, „SpisKsiazek”, acFirst,”[autor] like '” & „*aga*” & „'” End Sub
W praktyce raczej rzadko stosuję tą metodę, choć zdarza mi się w przypadkach, gdy szukam konkretnego rekordu, raczej bez Like i symboli wieloznacznych.
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.
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
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ę.
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.