dbLightFormEventsSample.zip
Autor: Krzysztof Naworyta
Baza w formacie MsAccess 2003
95kB, 21-12-2008
Zadanie:
Czy chcielibyście mieć kontrolę nad kwerendą/tabelą, porównywalną do tej, jaką mamy w formularzach ?
Czy tabela lub kwerenda może poinformować system, że jest zamykana ?
Czy chciałbyś coś zmienić w innych polach, po zmianie w jakimś polu tabeli/kwerendy ?
Odpowiedź brzmi: Tak! W końcu na jakiej stronie jesteśmy ? Sztuczki i chwyty !
Ale po co ?
Pamiętamy, że od czasu access'2000 możemy w formularzu osadzić tabelę/kwerendę jako podformularz, bez potrzeby tworzenia dla nich kolejnego obiektu (formularza).
Poza tym nawet w środowisku Run-Time możemy otworzyć kwerendę przy pomocy DoCmd.OpenQuery.
I nie ma w tym niczego złego.
Rozwiązanie:
Access otwierając tabelę i kwerendę w widoku normalnym musi dla nich stworzyć jakiś grid.
Ten grid to tak naprawdę dobrze nam znany formularz w widoku arkusz danych.
Możemy sprawdzić ten obiekt poprzez przypisanie go do zmiennej:
Dim frm As Form DoCmd.OpenTable "Table1" Set frm = Screen.ActiveDatasheetOkazuje się, że obiekt posiada właściwości dla zdarzeń: OnCurrent, OnUnload itp...
frm.OnUnload = "=MsgBox('Zamykamy !')"Pozostaje już tylko jedno pytanie:
Odpowiedź jest w modułach przytoczonego przykładu.
Uwaga:
Przy okazji realizacji tego zagadnienia natknąłem się na jeden nowy błąd
Przypomniał się też inny Bug, pojawiający się podczas zmiany rozmiaru formularza głównego.
--
KN