2012-11-06 40 views
5

W mojej aplikacji MS Access używam formularza, który zawiera tylko dwie kontrolki - pole tekstowe i przycisk polecenia. Ten formularz nazywa się HEADER FORM.Jak odwołać się do podformularza w MS Access

HEADER FORM służy jako podformularz w sekcji nagłówka różnych innych formularzy.

Co chcę zrobić, to zawsze, gdy konkretna forma ładuje, chcę wypełnić dane w polu tekstowym HEADER FORM (będzie to nazwisko osoby, która się zalogowała. To samo będzie jasne na poniższym obrazku).

Próbuję wywołać globalny podprogram o nazwie updateHeader w zdarzeniu ładowania formularzy wszystkich formularzy.

Public Sub updateHeader() 
    Me![HEADER FORM].Form.txtHeaderName.Value = strPerson 
End Sub 

Poniżej znajduje się obraz przedstawiający HEADER FORM w widoku projektu i tym samym wykorzystywany jako podformularzu w formularzu logowania.

enter image description here

Próbowałem różne inne opcje, ale nie jestem w stanie wyjść z prawidłowym sposobem referencyjne formularza. Czy robię coś złego fundamentalnie?

Błąd, który widzę, to nieprawidłowe użycie słowa kluczowego Me. Ponadto, mój podprogram updateHeader jest globalnym podprocedłem, który jest wywoływany z zdarzenia Form_Load wszystkich formularzy.

+0

Wygląda poprawnie ... jaki błąd widzisz? – McGarnagle

+0

@dbaseman: Dodałem szczegóły w samym pytaniu, aby wszystkie powiązane informacje pozostały razem. – Jay

Odpowiedz

3

Jeśli twoja procedura updateHeader() jest zawarta w standardowym module, to wyjaśniałoby to skargę dotyczącą słowa kluczowego Me ... nie jest prawidłowe w standardowym module.

W module formularza Me oznacza "ten formularz".

Można zmienić deklarację procedury, aby zaakceptować odwołanie do formularza.

Public Sub updateHeader(ByRef TheForm As Form) 
    ' Me![HEADER FORM].Form.txtHeaderName.Value = strPerson 
    TheForm![HEADER FORM].Form.txtHeaderName = strPerson 
End Sub 

.Value jest właściwość domyślna, a zatem nie jest potrzebny tutaj, więc zostawiłem ją. Ale nie zaszkodzi dodać go ponownie, jeśli wolisz.

Następnie można wywołać procedurę z formularza nadrzędnego i przekazać procedurze odwołanie do samej siebie (formularz nadrzędny).

updateHeader Me 
+0

Wielkie dzięki za odpowiedź. – Jay

0

mam te "wersje składni" od Wiley.Microsoft.Office.Access.2007.Bible: przy odwoływaniu kontroli podformularzu:

Forms [FormName] [SubformName] .Form! [ControlName]

Podczas używania/przedstawieniu podformularze ciągu podformularze, stosuje się następującą składnię: Forms [FormName] [SubformName] .Form [SubSubformName] .Form [ControlName]

!!.