2013-05-02 27 views
6

Những gì tôi đang cố gắng đạt được là cho một combo box (Combo_sf) lựa chọn để dictate mẫu trong điều khiển subform (sf_record) Tôi có khoảng 10 hình thức, tên của họ là trong dữ liệu hộp combo. Tôi mới vào VBA và không chắc chắn nếu cách tiếp cận của tôi là đúng:Access Subform Nguồn đối tượng

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 

tôi đã đặt này trong trường hợp sau khi cập nhật của combobox nhưng khi tôi thực hiện lựa chọn của tôi có gì xảy ra trong biểu mẫu. Tôi đang tiếp cận quyền này hay cách khác có hiệu quả hơn không?

Trả lời

5

Cách tiếp cận của bạn nên hoạt động. Tôi đặt một combo box tên cbxSubform vào mẫu chính của tôi và thêm một dòng mã để xử lý sự kiện AfterUpdate() của nó ...

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

... và thay đổi lựa chọn trong combo box chuyển mạch subforms ngay lập tức. Bạn có chắc chắn rằng mã số AfterUpdate() cho hộp tổ hợp của bạn thực sự đang kích hoạt không? (Bạn có thể thêm một MsgBox hoặc một Debug.Print để kiểm tra.)

+1

Cảm ơn bạn, tôi cho rằng vấn đề đã được xử lý trong các macro của tôi chưa được bật nhưng thông tin này rất hữu ích cảm ơn tất cả sự giúp đỡ của bạn! – Bawn

4

Nó có thể là dòng này được vấp ngã bạn lên:

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

được đối tượng mẫu của bạn gọi là gì? Nếu biểu mẫu của bạn được gọi là Form.myTableName, nó có thể là ., tức là ném nó ra, hãy thử đặt nó thành một biểu mẫu không có dấu chấm trong tên của nó.

4

Trong dòng này, có vẻ như mã cố gắng thay đổi thuộc tính SourceObject của đối tượng Form.

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

Tuy nhiên, SourceObject là một tài sản của một subform kiểm soát, không phải là hình thức chứa trong kiểm soát đó. Vì vậy, nếu điều khiển biểu mẫu con có tên là sf_record, hãy làm theo cách này.

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

Ngoài ra, nếu các thủ tục sau khi cập nhật chạy từ [frm_Mnu_Manage Configuration Settings], bạn có thể sử dụng Me để tham khảo các mẫu.

Me!sf_record.SourceObject = strLoadTable 

Cuối cùng, nếu Me.Combo_sf.Value là tên của một mẫu, bạn không cần phải thêm tiền tố tên của nó với "Mẫu".. Nó hoạt động theo cách trong bài kiểm tra của tôi, nhưng tôi sẽ để lại "Biểu mẫu"..

strLoadTable = Me.Combo_sf.Value 
Các vấn đề liên quan