Trước hết, hãy đảm bảo rằng chúng ta hiểu khái niệm đằng sau "hộp kết hợp xếp tầng". Logic chạy theo cách mà sau khi bạn thực hiện lựa chọn từ Combo1, các tùy chọn có sẵn trong Combo2 sẽ thay đổi để chúng là các mục chỉ liên quan đến Combo1. Tương tự, sau khi chúng tôi chọn một mục từ Combo2, các mục trong Combo3 sẽ chỉ là các mục liên quan đến những gì người dùng đã chọn trong Combo2.
Vì vậy, trước hết, mọi hộp tổ hợp ngoài Combo1 phải trống hoặc phải liên quan đến giá trị mặc định của Combo1. Bạn có thể làm theo một trong hai cách.
Tiếp theo, trong sự kiện AfterUpdate của Combo1, bạn sẽ có một cái gì đó như sau:
Me.cboCombo2.RowSource = "SELECT MyFieldNames " & _
"FROM tblMyTable " & _
"WHERE SomeID = " & Nz(Me.cboCombo1) & _
"ORDER BY SomeValue"
Me.cboCombo2.Requery
Rõ ràng, MyFieldNames, tblMyTable và tất cả các giá trị khác sẽ phụ thuộc vào những gì bạn thực sự đang tìm kiếm, bảng nguồn / tên truy vấn và tên trường của bạn, v.v.
OK, vì vậy bây giờ Combo2 sẽ lấp đầy dữ liệu chỉ liên quan đến những gì bạn đã chọn trong Combo1, vì chúng tôi đang sử dụng Combo1 làm bộ lọc trong SQL ở trên.
Nếu điều đó có vẻ ổn, hãy thực hiện nhiều hơn hoặc ít hơn những điều tương tự đối với Combo3. Bạn có thể cần lọc các giá trị từ cả hai kết hợp hoặc bạn có thể loại bỏ chỉ bằng cách sử dụng giá trị đó trong Combo2, tùy thuộc vào tập dữ liệu của bạn.
Lót, rửa sạch, lặp lại. Tôi đoán bạn sẽ cần làm như vậy 50 lần nếu bạn có 50 combo, nhưng đó là cách thực hiện.
Để tham khảo thêm, hãy xem bài viết này: http://www.fmsinc .com / microsoftaccess / form / combo-box / cascading.html