Liên kết hai Combo boxes với Subform

khanhminh06

New Member
Hội viên mới
Xin chào cả nhà!

Tôi gặp phải một vấn đề trong việc dùng hai Combo Boxes để liên kết tới một SubForm cụ thể là
Combo thứ hai được giới hạn bởi sự kiện After-Update của Combo thứ nhất(Tôi đã làm được). Nhưng Tôi không biết cách dùng dữ liệu có được của Combo thứ hai để làm Link Master Field tới một SubForm đặt trên cùng Form với hai Combo boxes đó. Tôi đã tìm trong Access Help nhưng không có, ai có thể gỡ giúp tôi bài toán này được không?
Xin chân thành cảm ơn!
 
Ðề: Liên kết hai Combo boxes với Subform

Bạn Vào thuộc tính Link child field và link master field và điền thông tin liên kết giữa 2 combo và subform!
Ví dụ cbo1 có control source là mamh, cbo2 có control source là makh,
và để liên kết được thì subform cũng fai chứa 2 field mamh và makh để có thể liên kết được
link child field:mamh,makh;
Linkmasterfield:cbo1,cbo2;
Không cần dùng đến thuộc tính After Update đâu!
Nếu dữ liệu chưa cập nhật bạn vào thuộc tính Change của 2 combo:cbo1.requery,cbo2.requery!
Không biết đúng ý bạn hok nữa!hi:conma:
 
Ðề: Liên kết hai Combo boxes với Subform

Bạn có thể lấy giá trị của 2 combobox đó, hoặc chỉ cần lấy giá trị của combobox thứ 2 mà tính toán và gán vào thuộc tính Filter của subForm.
ví dụ:
subform_hocsinhInfo.Filter = "ID='" & comboID_hocsinh.Value & "'"

(Đề nghị quý khách liên hệ phím F1 để biết thêm chi tiết).:k5516978:
 
Ðề: Liên kết hai Combo boxes với Subform

Xin chào cả nhà!

Tôi gặp phải một vấn đề trong việc dùng hai Combo Boxes để liên kết tới một SubForm cụ thể là
Combo thứ hai được giới hạn bởi sự kiện After-Update của Combo thứ nhất(Tôi đã làm được). Nhưng Tôi không biết cách dùng dữ liệu có được của Combo thứ hai để làm Link Master Field tới một SubForm đặt trên cùng Form với hai Combo boxes đó. Tôi đã tìm trong Access Help nhưng không có, ai có thể gỡ giúp tôi bài toán này được không?
Xin chân thành cảm ơn!

Việc bạn bẫy cái AfterUpdate của combo1 với mục đích gì: requery lại row source của combo2 hay làm gì khác? Tuy nhiên cái đó không là cái chính, chỉ đề cập ở đây cho bạn lưu ý mà thôi.

Để làm link master field cho một subform từ combo2 cũng đơn giản thôi. Giả sử combo2 có tên là combo2, là subform có tên là subform1. Ở subform, bạn có một control textbox chẳng hạn sẽ link với data của combo2 và textbox đó tên là texbox1. Bạn s34 làm như sau:

Link Master Fields: combo2
Link Child Fields: textbox1

Như vậy là được.
 
Ðề: Liên kết hai Combo boxes với Subform

Bạn Vào thuộc tính Link child field và link master field và điền thông tin liên kết giữa 2 combo và subform!
Ví dụ cbo1 có control source là mamh, cbo2 có control source là makh,
và để liên kết được thì subform cũng fai chứa 2 field mamh và makh để có thể liên kết được
link child field:mamh,makh;
Linkmasterfield:cbo1,cbo2;
Không cần dùng đến thuộc tính After Update đâu!
Nếu dữ liệu chưa cập nhật bạn vào thuộc tính Change của 2 combo:cbo1.requery,cbo2.requery!
Không biết đúng ý bạn hok nữa!hi:conma:

Trước hết xin rất rất cảm ơn bác đã bỏ thời gian quý báu để giúp đỡ tôi, Nhưng trường hợp này xin bác cho biết cái "cbo.requery" mà bác đề cập ấy, nó có Get Value cho cbo của mình không? và Thuộc tính Change mà bác nói đấy, có phải lằm trong tab Event->On Change? và mình nhập trực tiếp hay trên VBA?
Nếu được mong bác hãy giúp tôi chi tiết hơn được không?
-----------------------------------------------------------------------------------------
Bạn có thể lấy giá trị của 2 combobox đó, hoặc chỉ cần lấy giá trị của combobox thứ 2 mà tính toán và gán vào thuộc tính Filter của subForm.
ví dụ:
subform_hocsinhInfo.Filter = "ID='" & comboID_hocsinh.Value & "'"

(Đề nghị quý khách liên hệ phím F1 để biết thêm chi tiết).:k5516978:
Chà chà, Hy vọng rằng bác sẽ là cái nút mà tôi rất vất vả tim kiếm trong những ngày qua :tinhtuong: . Xin cảm ơn bác nhé, nhưng Xin bác nói rõ hơn về cái code:"subform_hocsinhInfo.Filter = "ID='" & comboID_hocsinh.Value & "'"? Tôi thấy cái code này hơi khó hiêu, bác đừng giận tôi tin vào nó( vì thấy có .Value :hi:)
Còn nữa, Tôi đã lục rất nhiều cái F1 rồi, tất nhiên là không thể hết được, nhưng không tài nào thấy. Bác chỉ tôi search cái mục này với?:mocmui:
Cảm ơn bác nhe! hy vọng bác sẽ cho những thông tin cụ thể hơn nữa, tôi rất mong tin bác.
-----------------------------------------------------------------------------------------
Việc bạn bẫy cái AfterUpdate của combo1 với mục đích gì: requery lại row source của combo2 hay làm gì khác? Tuy nhiên cái đó không là cái chính, chỉ đề cập ở đây cho bạn lưu ý mà thôi.

Để làm link master field cho một subform từ combo2 cũng đơn giản thôi. Giả sử combo2 có tên là combo2, là subform có tên là subform1. Ở subform, bạn có một control textbox chẳng hạn sẽ link với data của combo2 và textbox đó tên là texbox1. Bạn s34 làm như sau:

Link Master Fields: combo2
Link Child Fields: textbox1

Như vậy là được.

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:mocmui: . 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:tinhtuong:. Bác xem lại và giúp tôi với nhé. Cảm ơn bác nhiều.
 
Sửa lần cuối:
Ðề: 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:mocmui: . 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:tinhtuong:. 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
 
Ðề: Liên kết hai Combo boxes với Subform

Sao mà lung tung quá!
Mình cũng không rõ ý của bạn nữa!
Theo mình bây jo bạn tạo thêm 2 textbox nữa để getvalue cho 2 combo!
cụ thể ở mỗi text:cbo1.column(0),cbo2.column(0). Số 0 ở đây là vị trí cột của giá trị mà bạn cần lấy(0 cột đầu tiên). nếu nằm ở cột thứ 2 thì là column(1)...
Sau đó bạn dùng 2 textbox đó để làm thuộc tính liên kết với linkchildfield và linkmasterfield.
Vì giá trị của cbo2 được update sau khi bạn chọn giá trị trong cbo1 nên mình nghĩ cách này chắc là được đó! nếu cần bạn có thể vào thuộc tính onchange ở tab event và requery 2 cái textbox đó!
Nói chung cách này cũng giống cách phía trên mình đã nói thôi!Sau khi liên kết được rồi bạn cần visible 2 textbox đó để nó ẩn đi khi loadform!
Chúc bạn thành công!:xinchao:
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top