Tìm dữ liệu từ nhiều trường trong 1 bảng?

vuthuanbkvn

Member
Hội viên mới
Mình có table là tblnhap,trong đó có các trường : truc1,truc2,truc3
1 form nhập có 1 textbox là : txtkyhieutruc
mình muốn khi nhập ký hiệu trục ví dụ là 559 thì nó sẽ lọc dữ liệu từ các trường trong bảng? Mình làm như sau mà không được?
Dim st1 As String, st2 As String
'
st1 = "SELECT tblnhap.*" & _
"FROM tblnhap LEFT JOIN tbltinhtrang ON tblnhap.tinhtranghientai=tbltinhtrang.tinhtranghientai"
'
Select Case fmeFindOptions

' Truong hop 1
Case 1
If IIf(IsNull(txtkyhieutructim), "", txtkyhieutructim) = "" Then
MsgBox "Xin vui long nhap thong tin can tim"
Exit Sub
End If
st2 = " WHERE ((tblnhap.truc1) AND (tblnhap.truc2) AND (tblnhap.truc3) ) LIKE'*" & txtkyhieutructim & "*'"
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Bạn hãy coi lại xem là dùng AND hay dùng OR trong trường hợp này?
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Hic,tất nhiên mình thử cả OR và AND rồi chư? Tất cả dữ liệu được nhập vào các trường nhưng thử tìm thì nó không tìm đc?
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

ah,mình có thể tạo bằng checkbox không nhỉ? Mong Phát cho mình ví dụ về checkbox nhá. Option của bạn rất hay ,mình thực hành rất ok,bạn cho mình ví dụ về checkbox nha,vấn đề trên của mình có thể tìm kiếm bằng checkbox đc đấy nhỉ?
Chân thành cảm ơn!
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

ah,mình có thể tạo bằng checkbox không nhỉ? Mong Phát cho mình ví dụ về checkbox nhá. Option của bạn rất hay ,mình thực hành rất ok,bạn cho mình ví dụ về checkbox nha,vấn đề trên của mình có thể tìm kiếm bằng checkbox đc đấy nhỉ?
Chân thành cảm ơn!

Không rõ bạn thiết kế ứng dụng của mình ra sao, nên tôi không thể hướng dẫn cụ thể. Bạn có thể cho biết rõ hơn được không
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Mình đang làm 1 chương trình quản lý mấy cái trục khi đem đi trung tu và bảo dưỡng,phiền nỗi là khi mấy cái trục đó khi cầm đi trung tu,làm mỡ,và hoạt động nó được lắp lung tung trên các xe,lắm lúc đến thời điểm làm mỡ hay trung tu rồi mà chẳng biết cái nào với cái nào cả. Mình viết chương trình để quản lý khoảng gần 1000 trục xe và khoảng 200 toa xe,miễn sao kiểm tra đc đến thời kỳ bảo dưỡng thì những trục nào hoạt động lâu nhất thì đi bảo dưỡng,..... khi cần biết trục nào thì tìm cái biết nó có những thông tin gì.
Mình làm như sau:
- chỉ cần làm 1 table : tblnhap
trong đó gồm rất nhiều trường : TT,kyhieutoaxe,tentoaxe,truc1,truc2,truc3,truc4,tinhtranghientai,thoigiantrungtu,thoigianlammo,thoigianchohoatdong,thoigianhoatdong,solantrungtu.....
Chủ yếu chương trình này là dùng Form để xử lý table này.
- Mình làm 1 form nhập : frmnhapcacloaixe
- 1subform :frmnhapcacloaixe
Trên form nhập này thì khi nhập tất cả dữ liệu vào table này thì dữ liệu nhập sẽ hiển thị bên dưới,cái này mình làm đc rồi theo hướng dẫn của bạn Phát rất tỉ mỉ và chi tiết,chân thành cảm ơn.
- Phần tiếp : mình làm một Form tìm kiếm : frmtimkiemcacthietbi
Dự định : làm 1textbox tìm kiếm ký hiệu trục --> để khi biết ký hiệu trục thì cho nhập vào nó sẽ tìm tất cả trong 4 trường của table là : trúc,truc2,truc3,truc4 ; khi tìm đc rồi thì hiển thị ở subform bên dưới (cái này chưa làm đc dù đã dùng câu lệnh OR hay AND ở trên)
- Dự định 2 là : khi thấy kết quả thì nhấy đúp vào kết quả sẽ sang form nhập để sửa lại kết quả đó nếu thấy cần hoặc khi thay đổi dữ liêu (cái này cũng chưa làm đc) Mình đã tạo sự kiện Dblick vào subformtimkiem,va tạo sự kiện ở formnhap,sử dụng câu lệnh DAO như bạn Phát giới thiệu?
Mong các bạn giúp đỡ mình vì đây vừa là ví dụ để học vừa là công việc mà mình đang làm,mình chịu trách nhiệm trung tu và bảo dương mấy cái này,hic làm bằng excel khó chịu quá mình chuyển sang access,có nhiều bỡ ngỡ mong các bạn chỉ thêm
Chân thành cảm ơn.
-----------------------------------------------------------------------------------------
chết,vừa mải vào chỗ khác xem,post nhầm lên chỗ ấy:jfbq00191070412ahu0
đây! mong mọi người góp ý
mình gửi các bạn file còn lỗi mong các bạn giúp đỡ,chương trình màu mè tí,mình làm cho oai tí thôi chứ không phải là gì cả,cái này làm để mình sử dụng thôi mà. Nếu có pass thì các bạn ấn shift nha
http://www.box.net/shared/x7e2b1nh5v
 
Sửa lần cuối:
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Mình có 1 góp ý nhỏ, đừng phân ra làm truc1, truc2, truc3, truc4 mà để thành truc thôi
Cách nhập liệu sẽ được ký hiệu theo 4 loại như: A001, B001, C001, D001
Đến khi bạn cần truc1 ban chỉ cần lấy trục có ký tự đầu là A, tương tự cho các cái còn lại.
Và như thế khi tìm kiếm dữ liệu rất đơn giản, không cần and hay or gì cả.chỉ cần đặt thuộc tính update cho 1 field tìm kiếm dữ liệu dạng : like txttimkiem là OK rồi
Còn nếu bạn thích để cả 4 trục trong dữ liệu thì tôi có 1 mẹo nhỏ thế này:
Tạo thêm 1 trường trong query cần lọc có dạng: Trungtruc= truc1 & "." & truc2 & "." & truc3 & "." & truc4
Tại ô này mình đặt like "abc..." thế là cũng xong
 
Sửa lần cuối:
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Mình đang làm 1 chương trình quản lý mấy cái trục khi đem đi trung tu và bảo dưỡng,phiền nỗi là khi mấy cái trục đó khi cầm đi trung tu,làm mỡ,và hoạt động nó được lắp lung tung trên các xe,lắm lúc đến thời điểm làm mỡ hay trung tu rồi mà chẳng biết cái nào với cái nào cả. Mình viết chương trình để quản lý khoảng gần 1000 trục xe và khoảng 200 toa xe,miễn sao kiểm tra đc đến thời kỳ bảo dưỡng thì những trục nào hoạt động lâu nhất thì đi bảo dưỡng,..... khi cần biết trục nào thì tìm cái biết nó có những thông tin gì.
Mình làm như sau:
- chỉ cần làm 1 table : tblnhap
trong đó gồm rất nhiều trường : TT,kyhieutoaxe,tentoaxe,truc1,truc2,truc3,truc4,tinhtranghientai,thoigiantrungtu,thoigianlammo,thoigianchohoatdong,thoigianhoatdong,solantrungtu.....
Chủ yếu chương trình này là dùng Form để xử lý table này.
- Mình làm 1 form nhập : frmnhapcacloaixe
- 1subform :frmnhapcacloaixe
Trên form nhập này thì khi nhập tất cả dữ liệu vào table này thì dữ liệu nhập sẽ hiển thị bên dưới,cái này mình làm đc rồi theo hướng dẫn của bạn Phát rất tỉ mỉ và chi tiết,chân thành cảm ơn.
- Phần tiếp : mình làm một Form tìm kiếm : frmtimkiemcacthietbi
Dự định : làm 1textbox tìm kiếm ký hiệu trục --> để khi biết ký hiệu trục thì cho nhập vào nó sẽ tìm tất cả trong 4 trường của table là : trúc,truc2,truc3,truc4 ; khi tìm đc rồi thì hiển thị ở subform bên dưới (cái này chưa làm đc dù đã dùng câu lệnh OR hay AND ở trên)
- Dự định 2 là : khi thấy kết quả thì nhấy đúp vào kết quả sẽ sang form nhập để sửa lại kết quả đó nếu thấy cần hoặc khi thay đổi dữ liêu (cái này cũng chưa làm đc) Mình đã tạo sự kiện Dblick vào subformtimkiem,va tạo sự kiện ở formnhap,sử dụng câu lệnh DAO như bạn Phát giới thiệu?
Mong các bạn giúp đỡ mình vì đây vừa là ví dụ để học vừa là công việc mà mình đang làm,mình chịu trách nhiệm trung tu và bảo dương mấy cái này,hic làm bằng excel khó chịu quá mình chuyển sang access,có nhiều bỡ ngỡ mong các bạn chỉ thêm
Chân thành cảm ơn.
-----------------------------------------------------------------------------------------
chết,vừa mải vào chỗ khác xem,post nhầm lên chỗ ấy:jfbq00191070412ahu0
đây! mong mọi người góp ý
mình gửi các bạn file còn lỗi mong các bạn giúp đỡ,chương trình màu mè tí,mình làm cho oai tí thôi chứ không phải là gì cả,cái này làm để mình sử dụng thôi mà. Nếu có pass thì các bạn ấn shift nha
http://www.box.net/shared/x7e2b1nh5v

Bạn không dùng dấu nháy và từ khóa LIKE, bạn dùng toán tử OR trong câu query của mình. Do các trục bạn định là Number. Thế thôi.
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

st2 = " WHERE ((tblnhap.truc1) AND (tblnhap.truc2) AND (tblnhap.truc3) ) LIKE'*" & txtkyhieutructim & "*'"


Đại khái là bạn sai toàn là ở chỗ toán sơ cấp không hà.

1/. Dùng LIKE khi tìm chuỗi ký tự này trong chuỗi ký tự khác. Mà ở đây giá trị truc1, truc2, truc3, truc4 có kiểu số.

2/. Toán tử AND và OR dùng cho các giá trị kiểu logic nên:
((tblnhap.truc1) AND (tblnhap.truc2) AND (tblnhap.truc3)
là không có nghĩa. Hai bên của AND hoặc OR phải là các giá trị kiểu boolean (Yes/No) mà ở đây lại là giá trị kiểu số.

Có nhiều cách để làm. Đây là 1 cách:


st2 = " WHERE [tblnhap.truc1]=" & txtkyhieutructim
st2 = st2 & " OR [tblnhap.truc2]=" & txtkyhieutructim
st2 = st2 & " OR [tblnhap.truc3]=" & txtkyhieutructim
st2 = st2 & " OR [tblnhap.truc4]=" & txtkyhieutructim
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Hay quá,cách của bạn áp dụng tuyệt,cám ơn bạn vì có cả giải thích nữa. Các bạn hãy học tập kinh nghiệm của bạn muontennguoi nhá!
-----------------------------------------------------------------------------------------
Mình còn một khúc mắc như sau:
Tại form tìm kiếm dữ liệu tên là : frmtimkiemcacthietbi
Tại subform của form này mình tạo sự kiện Dblick với câu lệnh như sau :
'Dim rs string;
Dim rs As DAO.Recordset
'
Set rs = Forms("frmnhapcacthietbi").RecordsetClone
'
'
rs.FindFirst "tenloaixe= '" & txttenloaixe & "'"
'
If Not rs.NoMatch Then
'
Forms("frmnhapcacthietbi").Bookmark = rs.Bookmark
End If
Tại form nhập tên: frmnhapcacthietbi mình tạo sự kiện [Event Procedure]
Nhưng không thực hiện được lệnh Dblick để từ form tìm kiếm khi Dblick dữ liệu hiển thị trên form nhập để cập nhập thêm cái mới cho dữ liệu tìm được.
Mình tìm đi tìm lại không biết sai ở đâu? :chay:
 
Sửa lần cuối:
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Bạn lấy 1 miếng băng keo (băng dính) dán lên tay bạn.
Như vậy khi bạn click lên miếng băng ấy thì nghĩa là bạn click lên da bạn hay là click lên miếng băng keo?

Dĩ nhiên là bạn không chạm đến da của mình rồi vì nó đã bị miếng băng keo phủ lên trên.
Bạn phải click bên ngòai miếng băng keo đó thì bạn mới chạm vào da của mình được.

Vấn đề là bạn đặt cái event đó trong form_doubleclick hay textbox_doubleclick và thực tế là bạn click chuột ở đâu.

Có phải thế không?
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Bạn lấy 1 miếng băng keo (băng dính) dán lên tay bạn.
Như vậy khi bạn click lên miếng băng ấy thì nghĩa là bạn click lên da bạn hay là click lên miếng băng keo?

Dĩ nhiên là bạn không chạm đến da của mình rồi vì nó đã bị miếng băng keo phủ lên trên.
Bạn phải click bên ngòai miếng băng keo đó thì bạn mới chạm vào da của mình được.

Vấn đề là bạn đặt cái event đó trong form_doubleclick hay textbox_doubleclick và thực tế là bạn click chuột ở đâu.

Có phải thế không?

Hay quá,cách của bạn áp dụng tuyệt,cám ơn bạn vì có cả giải thích nữa. Các bạn hãy học tập kinh nghiệm của bạn muontennguoi nhá!
-----------------------------------------------------------------------------------------
Mình còn một khúc mắc như sau:
Tại form tìm kiếm dữ liệu tên là : frmtimkiemcacthietbi
Tại subform của form này mình tạo sự kiện Dblick với câu lệnh như sau :
'Dim rs string;
Dim rs As DAO.Recordset
'
Set rs = Forms("frmnhapcacthietbi").RecordsetClone
'
'
rs.FindFirst "tenloaixe= '" & txttenloaixe & "'"
'
If Not rs.NoMatch Then
'
Forms("frmnhapcacthietbi").Bookmark = rs.Bookmark
End If
Tại form nhập tên: frmnhapcacthietbi mình tạo sự kiện [Event Procedure]
Nhưng không thực hiện được lệnh Dblick để từ form tìm kiếm khi Dblick dữ liệu hiển thị trên form nhập để cập nhập thêm cái mới cho dữ liệu tìm được.
Mình tìm đi tìm lại không biết sai ở đâu? :chay:

Bác mượn lâu lâu dùng "tượng hình" quá. :xinloinhe:

Nói rõ thêm ý của bác mượn cho vuthuanbkvn hiểu là:
  • Khi bạn định DlbClick cho Form thì nó chỉ thực hiện khi bạn nhắp kép vào nút Record Selector của một dòng hoặc vào các cạnh của form.
  • Do vậy nếu bạn có nhắp kép vào textbox hay control nào có thể nhận sự kiện DblClick thì nó chỉ kích sự kiện DblClick của textbox hay control đó mà thôi.
  • Vậy muốn nhắp lên bất kỳ một trong 10 textbox thì đều làm cái bạn muốn thì bạn phải viết 10 cái thủ tục DblClick cho 10 cái textbox với nội dung y chang.
Nhân tiện cái câu Dim rs string của bạn vuthuanbkvn là sai cú pháp đấy nhé.
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Tất nhiên là Bắt sự kiện Double Click của form để cho form frmnhapcacdulieu hiển thị record có tenloaixe với tenloaixe của dòng được chọn nhắp kép. Sự kiện này xảy ra khi người sử dụng nhắp kép vào nút Record Selector của dòng record được nhắp kép đó ,các Record này là trên Subform chứ không phải là các textbox hay Control ở trên Form,các bạn hiểu sai ý mình rồi?:tucao::chuyengivay:
 
Sửa lần cuối:
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Tất nhiên là Bắt sự kiện Double Click của form để cho form frmnhapcacdulieu hiển thị record có tenloaixe với tenloaixe của dòng được chọn nhắp kép. Sự kiện này xảy ra khi người sử dụng nhắp kép vào nút Record Selector của dòng record được nhắp kép đó ,các Record này là trên Subform chứ không phải là các textbox hay Control ở trên Form,các bạn hiểu sai ý mình rồi?:tucao::chuyengivay:

Bạn phải tạo thủ tục sự kiện DblClick cho form tìm chứ sao bạn lại tạo cho form nhập ?
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Tất nhiên là Bắt sự kiện Double Click của form để cho form frmnhapcacdulieu hiển thị record có tenloaixe với tenloaixe của dòng được chọn nhắp kép. Sự kiện này xảy ra khi người sử dụng nhắp kép vào nút Record Selector của dòng record được nhắp kép đó ,các Record này là trên Subform chứ không phải là các textbox hay Control ở trên Form,các bạn hiểu sai ý mình rồi?:tucao::chuyengivay:

Bạn phải tạo thủ tục sự kiện DblClick cho form tìm chứ sao bạn lại tạo cho form nhập ?

Ơ,bạn chưa đọc kỹ, DblClick cho Form tìm cơ mà??? Trên Form nhập sẽ chỉ hiển thị các dữ liệu mà khi nháy kéo vào Record của Form tìm thôi? Y hệt ví dụ của bạn hướng dẫn đó thôi?
-----------------------------------------------------------------------------------------
Dây là hình
http://www.box.net/shared/ei11d3hx02
Đây là phần mình thiết kế?
http://www.box.net/shared/x7e2b1nh5v
:xinloinhe:
 
Sửa lần cuối:
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Ơ,bạn chưa đọc kỹ, DblClick cho Form tìm cơ mà??? Trên Form nhập sẽ chỉ hiển thị các dữ liệu mà khi nháy kéo vào Record của Form tìm thôi? Y hệt ví dụ của bạn hướng dẫn đó thôi?
-----------------------------------------------------------------------------------------
Dây là hình
http://www.box.net/shared/ei11d3hx02
Đây là phần mình thiết kế?
http://www.box.net/shared/x7e2b1nh5v
:xinloinhe:

Tìm đỏ con mắt trong design của bạn chẳng thấy em nào có tên là: txttenloaixetim

Vậy thì làm sao mà: rs.FindFirst "tenloaixe = '" & txttenloaixetim & "'" cho được ???
 
Ðề: Tìm dữ liệu từ nhiều trường trong 1 bảng?

Hay quá,cách của bạn áp dụng tuyệt,cám ơn bạn vì có cả giải thích nữa. Các bạn hãy học tập kinh nghiệm của bạn muontennguoi nhá!
-----------------------------------------------------------------------------------------
Mình còn một khúc mắc như sau:
Tại form tìm kiếm dữ liệu tên là : frmtimkiemcacthietbi
Tại subform của form này mình tạo sự kiện Dblick với câu lệnh như sau :
'Dim rs string;
Dim rs As DAO.Recordset
'
Set rs = Forms("frmnhapcacthietbi").RecordsetClone
'
'
rs.FindFirst "tenloaixe= '" & txttenloaixe & "'"
'
If Not rs.NoMatch Then
'
Forms("frmnhapcacthietbi").Bookmark = rs.Bookmark
End If
Tại form nhập tên: frmnhapcacthietbi mình tạo sự kiện [Event Procedure]
Nhưng không thực hiện được lệnh Dblick để từ form tìm kiếm khi Dblick dữ liệu hiển thị trên form nhập để cập nhập thêm cái mới cho dữ liệu tìm được.
Mình tìm đi tìm lại không biết sai ở đâu? :chay:

Trong form frmtimkiemcacthietbi không có cái txttenloaixe (chỉ có tenloaixe thôi) do đó các kết quả tìm kiếm luôn là "NoMatch".

Ngòai ra, theo ý nghĩa của việc tìm đó, tôi nghĩ là bạn cần tìm theo kyhieuloaixe mới đúng.

Private Sub Form_DblClick(Cancel As Integer)
Dim rs As DAO.Recordset
'
Set rs = Forms("frmnhapcacthietbi").RecordsetClone
'
rs.FindFirst "kyhieuloaixe = '" & kyhieuloaixe & "'"
'
If Not rs.NoMatch Then
'
Forms("frmnhapcacthietbi").Bookmark = rs.Bookmark
End If
End Sub
 

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


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

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

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top