ledangvan > 09-09-21, 04:34 PM
(08-09-21, 07:18 PM)Xuân Thanh Đã viết: Mời các bạn đam mê VBA cùng nhau giải bài toàn Tìm Kiếm và Lọc dưới đây để giúp một bạn trong Forum
1/ Cấu trúc File
- Table tblCustomer chỉ có một field CompanyName chứa danh sách khách hàng thân thuộc của Công ty
- Table tblResult chỉ có một field Match
- Form frmFinter có một textbox txtValue và một button btnFind
2/ Yêu cầu bài toán và lời giải
- Nhập một cụm từ khóa vào ô textbox txtValue trên form. Cụm từ khóa có độ dài bất kỳ tư 1 đến 5 từ, Sau khi nhấn button btnFind thì Lọc tắt cả các khách hàng có các từ trùng với tất cả các từ của cụm từ khóa dù cho nó nằm ở bất kỳ vị trí nào rồi append vào tblRessult
3/ Ví dụ : Cụm từ khóa "xây dựng Bình An" thì kết quả sau append là
Công ty TNHH xây dựng Bình An
Công ty đâu tư xây dựng và thương mại An Binh Nam
Công ty cổ phần dịch vụ xây dựng Hoàng Bình An
....
P/s : Đưa ra biện pháp (Thuật toán ) để giải và viết code cho btnFind
ongke0711 > 09-09-21, 06:36 PM
(09-09-21, 02:43 PM)paulsteigel Đã viết:(09-09-21, 11:04 AM)ongke0711 Đã viết: arrTuKhoa = Split(Me.txtValue)Ông kẹ ơi, không cần thiết phải có 1=1 đâu, chỉ cần sqlWhere = mid(sqlWhere,4) để bỏ từ khóa AND đầu chuỗi đi. Nếu để 1=1 thì tốc độ sẽ bị chậm chút ít. Lệnh execute sẽ chạy theo điều kiện mà ông kẹ làm rồi! Có tìm được thì đẩy vào, không có thì thôi!
sSQL = "Select CompanyName From tblCustomers Where 1=1"
Xuân Thanh > 10-09-21, 03:52 PM
(09-09-21, 02:43 PM)paulsteigel Đã viết:(09-09-21, 11:04 AM)ongke0711 Đã viết: arrTuKhoa = Split(Me.txtValue)Ông kẹ ơi, không cần thiết phải có 1=1 đâu, chỉ cần sqlWhere = mid(sqlWhere,4) để bỏ từ khóa AND đầu chuỗi đi. Nếu để 1=1 thì tốc độ sẽ bị chậm chút ít. Lệnh execute sẽ chạy theo điều kiện mà ông kẹ làm rồi! Có tìm được thì đẩy vào, không có thì thôi!
sSQL = "Select CompanyName From tblCustomers Where 1=1"