P023
Odwołania do podformularzy


Odwołania do formularzy osadzonych w formularzach, czyli do podformularzy (lub podraportów), są częstą przyczyną kłopotów, zwłaszcza początkujących użytkowników programu. Przykładowo kod:

  Set mojrst = Me![Moj podformularz].RecordsetClone

nie chce działać. Należy w takich przypadkach używać właściwości Form (Report).


Poniżej "wzory ogólne" składni i przykłady:

Odwołania do właściwości/metod podformularza:

   forms!nazwa_formularza!nazwa_podformularza.Form.nazwa właściwości/metody

Przykład:  forms![Jakiś formularz]![A w nim podformularz].Form.Requery
             Set mojrst = forms![Jakiś formularz]![A w nim podformularz].Form.RecordsetClone


Odwołania do pól/elementów sterujących (formantów) podformularza:

   forms!nazwa_formularza!nazwa_podformularza.Form!nazwa_pola/elementu_podformularza(formantu)

Przykład:  mojazmienna = forms![Jakiś formularz]![A w nim podformularz].Form![Moje pole w podformularzu]


Odwołania do własciwości/metod pól/formantów podformularza:

   forms!nazwa_formularza!nazwa_podformularza.Form!nazwa_pola/elementu_podformularza(formantu).nazwa właściwości/metody

Przykład:  forms![Jakiś formularz]![A w nim podformularz].Form![Jakis_formant podformularza].Visible = False


W przypadku pisania kodu dotyczącego bieżącego formularza,  można oczywiście dla uproszczenia stosować właściwość Me, np:

Me!nazwa_podformularza.Form.... , np.:

Me![Moj podformularz].Form.Requery
Set mojrst =Me![Moj podformularz].Form.RecordsetClone

Należy zauważyć, że nazwa_podformularza jest tutaj nazwą elementu (formantu) osadzonego w formularzu i niekoniecznie musi być taka sama, jak nazwa tegoż podformularza zapisanego w Oknie bazy danych. Na przykład umieszczony w formularzu podformularz może nazywać się MojPodformularz (i do tej nazwy należy się odwoływać), a w bazie danych być zapisany jako formularz o nazwie np. PodformularzDlaFormularzaX.

Uwaga. W wersjach nowszych niż Access 2.0 (np. (Acc'97) używanie właściwości Form nie zawsze jest konieczne. Przykładowo:

Me![Moj podformularz].Requery
mojazmienna = Me![Moj podformularz]![Moje pole w podformularzu]

jest wykonywane poprawnie. Ale na przykład:

Set mojrst = Me![Moj podformularz].RecordsetClone
Me![Moj podformularz]![Moj formant w podformularzu].Visible = False

zwracają błąd wykonania "Obiekt nie obsługuje tej właściwości lub metody". Dlatego konsekwentne stosowanie Form wydaje się być zalecane; podkreśla moim zdaniem, że chodzi o odwołanie do podformularza.


Poniżej można pobrać niewielką aplikację, zawierającą kilka przykładów odwołań do podformularzy.


Napisał: Stanley, 18 II 2000
Źródła: Pomoc programu, temat Form, Report, właściwości.


[Strona główna] [Wyjście] [Poprzedni] [Następny]