Ðề: Liên kết hai Combo boxes với Subform
Chào bác, ý tưởng của bác cũng giống như của bác
TranDang, Tuy nhiên trường hợp của tôi không đơn giản như bác nghĩ đâu. Nhất thời tôi chưa hiểu được là vì sao mà nó phức tạp đến thế. Nói cụ thể hơn là ntn: Trước khi post bài để hỏi ý kiến các bác tôi đã từng thử làm khá nhiều trường hợp ( gồm cả trường hợp mà bác đề cập) thập chí đã nghĩ đến việc sửa lại Table gốc
. Tuy nhiên tôi thấy Tables gốc không có vấn đề gì bởi vì Cả hai biện pháp Link( một là dùng Query động hai là dùng Link master and child Feild) để liên kết SubForm của tôi tới
một cbo riêng lẻ, cũng cùng nguồn Lookup với cbo mà tôi đã đề cập thì hoàn toàn OK. Vậy vấn đề, theo tôi nghĩ sau khi có được cbo thứ hai, đồng thời nó đã mất Values của nó chăng? và ta cần một động tác nào đó để get lại cái Value đã mất đó? và nếu thế thì cách làm là ntn? còn nữa, nếu theo như tôi nghĩ thì cái hiển thị ở cbo thứ hai là gì? không phải là Value? >>> khó thật
. Bác xem lại và giúp tôi với nhé. Cảm ơn bác nhiều.
Thứ nhất, tôi không rõ bạn thiết kế nhằm giải quyết vấn đề gì, tuy nhiên tôi cần trao đổi thêm với bạn mấy ý:
Trường hợp bạn thay đổi giá trị trong combo box 1:
Bạn sẽ phải update lại cái Row Source của combo box 2. Cái này chắc bạn đã làm.
Nhưng bạn có để ý lúc update lại cái Row Source của combo box 2, combo box 2 có thể ở trong hai trạng thái: đang có giá trị, chưa có giá trị (Null).
Đang có giá trị, có thể giá trị hiện tại sẽ không còn match với Row Source mới nữa. Như vậy tất nhiên việc hiển thị giá trị trên combo box 2 sẽ không còn ý nghĩa.
Chưa có giá trị thì không phải bàn.
Thông thường, trong trường hợp này, sau khi bạn update Row Source của combo box 2, bạn cũng nên gán cho combo box 2 = Null. Các ứng dụng chuyên nghiệp người ta cũng làm thế.
Còn dữ liệu trong subform có thay hay không theo giá trị hiện tại của combo box 2 là do Link Child Fields và Link Master Fields quyết định.
Với cách thiết kế của bạn, có thể tạm gọi là dạng main/sub cấp "ông nội": combo box 1 là "cha" của combo box 2, combo box 2 là "cha" của subform.
Bạn muốn có sự update dữ liệu tức thời lên hai combo box 2 và subform nếu chỉ chọn giá trị ở combo box 1? Nếu đúng vậy, tôi đề nghị bạn sử dụng cách thiết kế khác:
thiết main/subform nhiều cấp.
Bạn sẽ làm một form chứa data như của combo box 1, Default View là Datasheet hoặc Continuous Forms. Tương tự bạn cũng làm một cái form chứa data như của combo box 2, Default View là Datasheet hoặc Continuous Forms.
Bạn thay cái combo box1 = subform chứa form thứ 1. Ví dụ name của thằng subform này sub1.
Bạn thay cái combo box2 = subform chứa form thứ 2. Ví dụ name của thằng subform này sub2. Link Child Fields: field liên kết với data của form1, Link Master Fields: sub1.Form!field của form1 liên kết với data của form2.
Ở subform thứ 3: Link Child Fields: field liên kết với data của form2, Link Master Fields: sub2.Form!field của form2 liên kết với data của form3.
Sau đó bạn vào thủ tục Form_Current của form1:
Parent.sub2.Requery
Bạn vào thủ tục Form_Current của form2:
Parent.sub3.Requery
Đây là cách tôi thường làm