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.