Xin hỏi cách tạo combobox lồng nhau

thebadvn

New Member
Hội viên mới
Xin chào tất cả các member danketoan.

Đệ có viết một ct quản lý đơn giản bằng access nhưng có một đoạn không cách nào giải quyết được . Đệ đã tìm khắp trên diễn đàn rồi mà không thấy nên mới post lên đây. Mong các cao thủ chỉ giáo cho đệ.

Đệ có 3 bảng :
A: Gồm có 2 field : manoidung
A_2 : Giống hệt bảng A nhưng dữ liệu nhập vào khác
B : Gồm 2 trường : thutunoidungdachon
Đệ tạo một form nhập dữ liệu . Chẳng hạn đơn giản chỉ có một textbox để nhập thứ tự và một combobox để chọn nội dung (2 cột , ẩn cột 1 :0";1" ) .Giá trị được lưu vào bảng B. Trong combobox đó kết nối tới bảng A có 2 trường dữ liệu. Nếu chọn trường đầu thì thôi nhưng nếu chọn trường thứ 2 thì tiếp tục mở ra một combobox kết nối tới bảng A_2 khác để người dùng chọn tiếp.
Cách của đệ :
ban đầu thì gán CboNoiDung.RowSource ="select * from A"
Nếu người dùng chọn trường thứ 2 : (cbonoidung.value=2)
thì gán lại cbonoidung.rowsource="select * from A_2)
trong on current sử dụng requery để người dùng chọn tiếp
Nhưng có 2 vấn đề :
Một là khi lưu vào B xong chuyển sang record khác thì dữ liệu nó không chính xác. Chẳng hạn khi chọn trong A_2 là trường thứ 3 thì khi xem trên bảng B thông tin nó ghi lại chỉ là 3 Mà 3 thì ở bảng A cũng có , bảng A_2 cũng có thì đệ không biết làm sao mà xử lý. Nên đệ chỉ muốn lưu nội dung thôi.
Thứ 2 là khi chuyển sang record mới thì cbonoidung nó không tự động quay lại như ban đầu. Đệ không biết gán lại cbonoidung.rowsource vào đoạn nào.

Mong các huynh các tỷ giúp đệ với. Đệ đau đầu với cái này hơn 2 tuần rồi mà không tìm ra được cách nào cả.

Đệ hỏi thêm tý : Cái này thằng bạn đệ ngồi bên nó nhờ hỏi luôn :D
Đệ muốn làm một report mà chỉ hiện những thông tin do người dùng yêu cầu thì làm thế nào. Chẳng hạn như người dùng không thích hiện Số ĐT thì tắt checkbox số điện thoại đi sẽ không hiện số đt trên report .
Có cách nào khác để report lọc thông tin ngoài filter không . Vì đệ thấy nó chậm quá. Có hơn 10 cái so sánh trong filter cộng với gần 20.000 bản ghi đệ thấy nó chạy lâu , nhiều lúc còn dump.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Thấy bạn mô tả hơi lằng nhằng , không hiểu cụ thể nên khó giúp quá.
Tuy nhiên mình có 1 vài ý kiến thế này.
1. Không nên đặt số thứ tự bằng tay, nên để chế độ Autonumber sẵn có của nó
2. Xem lại cách thiết kế vì theo bạn nói giá trị của combobox được lưu vào bảng B là thế nào? Combobox chỉ cho ta chọn giá trị trong nó còn việc gán giá trị của nó cho 1 đối tượng nào khác ta phải dùng VBA hoặc câu lệnh SQL
3. VÍ dụ để lấy giá trị của cmb1 làm điều kiện khi mở cmb2 như sau
Tại cmb1(update) viết đoạn code
cmb2.RowSource="select noidung from A2 where ma='" & me.cmb1.value & "'"
BẠn nên upload file ví dụ để anh em chỉnh sửa cho nhanh hơn chứ gợi ý thề này hơi lâu
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Các huynh các tỷ tải về xem hộ đệ với nhé. Các huynh cứ thử mở form B lên. Chọn giá trị tpVT, thì nó sẽ thay đổi thành combobox để chọn tiếp phường.
Ok hoạt động tốt , nhưng đến khi chuyển sang record mới thì nó vẫn để là phường mà không quay lại ( tất nhiên vì đệ chưa tìm cách nhét code vào đoạn nào , đệ không biết khi chuyển qua record mới thì bắt sự kiện nào ). Và quan trọng hơn là khi duyệt lại thì không biết dữ liệu trong table B nó chỉ vào đâu.
Nói đơn giản thế này thôi :
Các huynh chọn tpvt. -> chọn phường 2 chẳng hạn
Chuyển sang record kế -> hoạt động không như ý
Tắt
Mở lại form -> bây thì không phải là phường 2 mà lại là lộc an.

Các huynh các tỷ xem qua rồi sửa hộ đệ với. Nếu có sẵn file ví dụ thì càng hay .:hurray:
Đây là link down bên box.net : http://public.box.net/thebad16788
Đệ nén bằng Winrar.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Thực sự là vẫn chưa hiểu được ý đồ của bạn. Đây là cách viết cho các combobox lồng nhau:
http://www.mediafire.com/?sharekey=7f1b55243ce6fad2d2db6fb9a8902bda
-----------------------------------------------------------------------------------------
Bạn xem lại việc thiết kế chương trình nhé. Hình như bạn thiết kế thiếu 1 trường dữ liệu trong table B. Có 2 trường mã : 1 dùng cho tỉnh, 1 cái dùng cho phường. Tốt nhất bạn nên để matinh, maphuong. Như vậy kết cấu table có dạng
A: Matinh, Tentinh
A_2: Maphuong,tenphuong, matinh
B:Matinh,Maphuong,Noidung
Như thế việc xử lý rất dễ dàng
 
Sửa lần cuối:
Ðề: Xin hỏi cách tạo combobox lồng nhau

Cảm ơn huynh . Để đệ tải về xem đã . Thật không ngờ vừa đi về đã có câu trả lời. Cảm động quá . Nếu phải thay đổi cấu trúc bảng thì đệ cũng hãi. Với 20.000 bản ghi thì chít đệ luôn huynh à.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Chắn chắn bạn phải thiết kế lại rồi. Việc chuyển đổi cũng dễ dàng thôi. Access 2003 có thể thay đổi tên các đối tượng tại form, query, report ngay khi ta thay đổi tên table. Bạn nên phân tích cơ sở dữ liệu trước khi viết.
VD:
Một tỉnh có nhiều phường
Một phường có nhiều vụ việc.
Trong trường hợp bạn viết "các trường khác" nó biết là lấy giá trị theo mã nào? Mã của tỉnh hay mã của phường.
Hình như bạn thích viết code nhưng lại không chú ý đến phân tích dữ liệu
-----------------------------------------------------------------------------------------
Đây là file mình đã viết lại, chắc là đúng theo cái bạn cần
http://www.mediafire.com/?sharekey=7f1b55243ce6fad2d2db6fb9a8902bda
 
Sửa lần cuối:
Ðề: Xin hỏi cách tạo combobox lồng nhau

Cảm ơn huynh. Đệ danhd thêm một trường nữa , đệ xử lý được rùi. Đệ vừa học access nên còn lèm bèm lắm. Huynh có ở Vũng Tàu không ? Ở Vũng Tàu thì cho đệ số phone thỉnh thoảng huynh đệ mình đi nhậu :cheers1:
 
Sửa lần cuối:
Ðề: Xin hỏi cách tạo combobox lồng nhau

Huynh có ở Vũng Tàu không ? Ở Vũng Tàu thì cho đệ số phone thỉnh thoảng huynh đệ mình đi nhậu :cheers1:

Đã từng là người Vũng tàu có được không? :31:
Lớn lên, học hành phổ thông ở Vũng tàu, rồi rời Vũng tàu từ năm 1989, có còn được xem là dân Vũng tàu không vậy?
Tui là đồng môn phổ thông của một số bác sĩ đó nghen (Vũ Lan Khuê, Trần Quang Thái, Trương Văn Đằng, ...).
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Đã từng là người Vũng tàu có được không? :31:
Lớn lên, học hành phổ thông ở Vũng tàu, rồi rời Vũng tàu từ năm 1989, có còn được xem là dân Vũng tàu không vậy?
Tui là đồng môn phổ thông của một số bác sĩ đó nghen (Vũ Lan Khuê, Trần Quang Thái, Trương Văn Đằng, ...).

1963 - 1989 => 26 năm chất Vũng Tàu.
1989 - 2008 => 19 năm chất Sài Gòn.
=> Muối nhiều hơn tiêu, vẫn còn hơi mặn.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Thế đã từng qua Vũng Tàu thì sao các bác. 5-6 năm về trước em đã từng ở Vũng tàu 1 ngày
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Đệ thì vừa mới vào Vũng Tàu , chắc còn ở lâu chưa biết ngày về. :banghead:. Vừa vào mà nhớ nhà kinh khủng.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

1963 - 1989 => 26 năm chất Vũng Tàu.
1989 - 2008 => 19 năm chất Sài Gòn.
=> Muối nhiều hơn tiêu, vẫn còn hơi mặn.

He he. Vậy a?
Đúng ra là 1964 - 1989 => 25 thôi. 1963 là ở Sè-goòng a.
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Xin các bạn!
Mình có hai bảng sau:
Table_TINH(Matinh, tentinh)
Table_Huyện(Matinh, tenhuyen)
Hai bảng này có quan hệ với nhau thông qua "Matinh"
Vấn đề ở đây là khi tạo hai combobox "Tỉnh" và combobox "Huyện" .Mình muốn là khi chọn combobox "Tỉnh" thì chỉ hiển thị danh sách ở combobox "Huyện" những huyện thuộc tỉnh đó thôi!
Ví dụ: Khi chọn "Lâm Đồng" thì chỉ hiển thị ở combobox "Huyện" những huyện thuộc tỉnh Lâm Đồng thôi như: Bảo Lộc, Cát Tiên ...
Xin cám ơn!
Email của mình: ngvanhaibloc@vnn.vn
Yahoo ID: th31sun
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Xin các bạn!
Mình có hai bảng sau:
Table_TINH(Matinh, tentinh)
Table_Huyện(Matinh, tenhuyen)
Hai bảng này có quan hệ với nhau thông qua "Matinh"
Vấn đề ở đây là khi tạo hai combobox "Tỉnh" và combobox "Huyện" .Mình muốn là khi chọn combobox "Tỉnh" thì chỉ hiển thị danh sách ở combobox "Huyện" những huyện thuộc tỉnh đó thôi!
Ví dụ: Khi chọn "Lâm Đồng" thì chỉ hiển thị ở combobox "Huyện" những huyện thuộc tỉnh Lâm Đồng thôi như: Bảo Lộc, Cát Tiên ...
Xin cám ơn!
Email của mình: ngvanhaibloc@vnn.vn
Yahoo ID: th31sun
Xem ví dụ ở bài này;
Chắn chắn bạn phải thiết kế lại rồi. Việc chuyển đổi cũng dễ dàng thôi. Access 2003 có thể thay đổi tên các đối tượng tại form, query, report ngay khi ta thay đổi tên table. Bạn nên phân tích cơ sở dữ liệu trước khi viết.
VD:
Một tỉnh có nhiều phường
Một phường có nhiều vụ việc.
Trong trường hợp bạn viết "các trường khác" nó biết là lấy giá trị theo mã nào? Mã của tỉnh hay mã của phường.
Hình như bạn thích viết code nhưng lại không chú ý đến phân tích dữ liệu
-----------------------------------------------------------------------------------------
Đây là file mình đã viết lại, chắc là đúng theo cái bạn cần
http://www.mediafire.com/?sharekey=7f1b55243ce6fad2d2db6fb9a8902bda
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Xin các bạn!
Mình có hai bảng sau:
Table_TINH(Matinh, tentinh)
Table_Huyện(Matinh, tenhuyen)
Hai bảng này có quan hệ với nhau thông qua "Matinh"
Vấn đề ở đây là khi tạo hai combobox "Tỉnh" và combobox "Huyện" .Mình muốn là khi chọn combobox "Tỉnh" thì chỉ hiển thị danh sách ở combobox "Huyện" những huyện thuộc tỉnh đó thôi!
Ví dụ: Khi chọn "Lâm Đồng" thì chỉ hiển thị ở combobox "Huyện" những huyện thuộc tỉnh Lâm Đồng thôi như: Bảo Lộc, Cát Tiên ...
Xin cám ơn!
Email của mình: ngvanhaibloc@vnn.vn
Yahoo ID: th31sun


Combo1 lấy giá trị field Matinh (hoặc Tentinh) của Table_TINH

Combo2 lấy giá trị field Tenhuyen của Table_Huyen
và field Matinh (hoặc Tentinh) - có Criteria là Forms!<tên form>!Combo1

Thêm code cho Combo1 After update là
Combo2.requery

Theo tôi nên bỏ mã tỉnh đi, tên tỉnh làm khoá chính cũng được.
 
Sửa lần cuối:
Ðề: Xin hỏi cách tạo combobox lồng nhau

Nhưng trong chương trình của tôi đòi hỏi cần mã tỉnh để truy xuất, bạn nói như vậy tôi chưa hiểu kỹ lắm nhưng làm thử xem sao đã! Có gì tôi gọi lại cho bạn sau!
Nếu được thì mời bạn tới Bảo Lộc chơi vvaf tham quan nha!!
Ở đây kí hậu mát mẻ lắm! Hihi!
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Nói 1 cách đơn giản nó là thế này:
Tại ComboTinh thì source của nó có dạng: Select MAtinh, Tinh from Table_Tinh
Khi đối tượng ComboTinh update thì ta khai báo Source cho ComboHuyen.
Source của ComboHuyen có dạng: Select * from Table_Huyen where MaTinh=ComboTinh.
Tuy nhiên vì ComboTinh là 1 string nên phai có nó vào cái dấu ' ' và như thế nó có dạng
:Select * from Table_Huyen where MaTinh= '" & ComboTinh & "'"
 
Ðề: Xin hỏi cách tạo combobox lồng nhau

Mình tạo 2 combo box từ 2 table: Table1:toidanh(matoidanh, tentoidanh) ;Table2:Danhbatoidanh(madanhbatoidanh,tendanhbatoidanh,matoidanh).tương đương với combo box1 và combo box2.mỗi matoidanh có nhiều tendanhbatoidanh.
làm sao khi mình click vào matoidanh của combox1 thì các tendanhbatoidanh thuộc matoidanh của combo box1 hiển thị ở combo box2 .giúp mình với xin cám ơn rất nhiều!
Địa chỉ Email của minh:lethidam0901@yahoo.com
 
Sửa lần cuối:
Ðề: Xin hỏi cách tạo combobox lồng nhau

Combo1 lấy giá trị field Matinh (hoặc Tentinh) của Table_TINH

Combo2 lấy giá trị field Tenhuyen của Table_Huyen
và field Matinh (hoặc Tentinh) - có Criteria là Forms!<tên form>!Combo1

Thêm code cho Combo1 After update là
Combo2.requery

Theo tôi nên bỏ mã tỉnh đi, tên tỉnh làm khoá chính cũng được.

Cám ơn các bạn. Mình đã làm theo hướng dẫn và thấy kết quả hiện lên đúng như ý tưởng. Tuy nhiên mình còn 2 vướng mắc sau chưa giải quyết được:
1. Khi để form ở dạng datasheet thì khi requery, các combobox ở bản ghi trước bị mất hết (đã ghi nhưng bị lọc nên không hiện).
2. Khi chuyển form này vào subform (cũng ở dạng datasheet thì nó luôn đòi điều kiện của Combo1 trước khi mình nhập liệu

Mong các bạn chỉ giúp mình giải quyết 2 vấn đề trên. Cám ơn nhiều
 

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