2013-05-02 12 views
6

Co próbuję osiągnąć, to wybór w polu kombi (Combo_sf) do dyktowania formularza w formancie podformularza (sf_record) Mam około 10 formularzy, ich nazwy znajdują się w danych pola kombi. Jestem nowy w VBA i nie jestem pewien, czy moje podejście jest słuszne:Obiekt Subform Source Access

Private Sub Combo_sf_AfterUpdate() 
    Dim strLoadTable As String 

    strLoadTable = "Form." & Me.Combo_sf.Value 
    MsgBox strLoadTable 

    Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable 

End Sub 

umieściłem to w po aktualizacji zdarzenia ComboBox, ale kiedy robię mój wybór nic się nie dzieje w formularzu. Czy zbliżam się do tego prawa, czy też w inny sposób będzie lepiej działać?

Odpowiedz

5

Twoje podejście powinno być praca. I umieścić pole kombi o nazwie cbxSubform na moim formularzu głównym i dodać jedną linię kodu do jego AfterUpdate() obsługi zdarzeń ...

Private Sub cbxSubform_AfterUpdate() 
Me.mySubform.SourceObject = Me.cbxSubform.Value 
End Sub 

... i zmianę wyboru w polu kombi przełącza podformularze natychmiast. Czy jesteś pewien, że kod AfterUpdate() dla twojego pola kombi faktycznie się uruchamia? (Można dodać MsgBox lub Debug.Print sprawdzić.)

+1

Dziękuję, myślę, że ten problem lyed w moich makr nie zostały włącza się, ale ta informacja była bardzo dziękuję wam za pomoc wszystkim pomoc! – Bawn

4

To może być to linia, która jest potknięcia cię:

strLoadTable = "Form." & Me.Combo_sf.Value 

Jaki jest Twój obiekt postać nazywa? Jeśli Twój formularz nazywa się Form.myTableName, może to być ., który go wyrzuca, spróbuj ustawić go do postaci bez kropki w nazwie.

4

W tym wierszu wygląda na to, że kod próbuje zmienić wartość obiektu SourceObject obiektu Form.

Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable 

Jednak SourceObject jest własnością podformularzu kontroli, a nie forma zawarte w tej kontroli. Więc jeśli formant podformularza ma nazwę sf_record, zrób to w ten sposób.

Forms![frm_Mnu_Manage Configuration Settings]!sf_record.SourceObject = strLoadTable 

Ponadto, jeżeli procedura po aktualizacji trwa od [frm_Mnu_Manage Configuration Settings] można użyć Me odnosi się do postaci.

Me!sf_record.SourceObject = strLoadTable 

Wreszcie, jeśli Me.Combo_sf.Value to nazwa formularza, nie trzeba poprzedzić jego nazwę z „Form”.. To zadziałało w moim teście, ale po prostu zostawiłbym "Formę"..

strLoadTable = Me.Combo_sf.Value