-
RE: Lập tìm kiếm theo cách ngẫu hứng
tranthanhan1962 > 06-06-20, 12:40 PM
Theo ý kiên của các thân hữu. Thử xây dụng một function để chuyển đổi chuỗi làm crierita theo kiêu Noname và thuyyeu 99. Unsuccessful. Cá bạn nghiên cứu thêm.
Public Function ChuyenDoi(A As String)
Dim B As String
B = Replace(A, " ", "' & '*' & '")
ChuyenDoi = "'*' & '" & B & "' & '*'"
End Function -
RE: Lập tìm kiếm theo cách ngẫu hứng
Noname > 06-06-20, 05:02 PM
(06-06-20, 11:03 AM)thuyyeu99 Đã viết:
mục đích của tạo Column riêng là vì ta có thể tìm kiếm trên 1 lúc nhiều field chứ không phải chỉ 1 field.(06-06-20, 08:57 AM)Noname Đã viết:
Nếu vậy chỉ cần Replace Space thành * cho nó lẹ chứ tạo Column chi anh ?(05-06-20, 06:58 PM)ongke0711 Đã viết: Cách tìm này chỉ cần tách chuỗi tìm kiếm ra thành từng từ rồi đưa vô câu lệnh SQL.
Phát triển ý tưởng này như sau:
Ví dụ: Công ty Hà Nội
--> [Tên] Like "*công*" Or [Tên] Like "*ty*" OR [Tên] Like "*Hà*" OR [Tên] Like "*Nội*"
Dùng hàm Split() tách chuỗi rồi dùng Like hoặc Instr() để tìm ký tự.
1. Tạo 1 colume lưu tất cả các từ khóa có thể tìm kiếm: ví dụ colume [tag]: công, ty, hà, nội, văn, kế, toán
2. cho chạy 1 đoạn code chạy để lưu tất cả các từ khóa vào field để không phải nhập tay
3. Trong quá trình tìm kiếm, chỉ tìm kiếm trên colume tạo ra này, kết hợp với việc tách chuỗi như Ông kẹ nói bên trên.
Ví dụ chuyển đối chuỗi: "Công ty Nội Văn Toán" => [tag] like "*công*" or [tag] like "*ty*" or [tag] like "*Nội*" or [tag] like "*Văn*" or [tag] like "*Toán*"
Mình nghĩ khả thi trong việc tìm kiếm tùy ý như tìm danh bạ.
Đúng tinh thần của cấu trúc danh bạ: gồm các field sau: Fisrtname, lastname, phone 1, phone 2, company name, email....
=> Cần 1 colume gộp tất cả những thứ này lại để tiện cho việc truy vấn -
RE: Lập tìm kiếm theo cách ngẫu hứng
ongke0711 > 06-06-20, 05:24 PM
Làm demo cho các bạn tham khảo.
Link: https://drive.google.com/file/d/1VyOaniI...sp=sharing
Tôi làm theo 2 cách:
- Cách dùng hàm Replace () của bạn Thuyyeu99.
- Cách tách chuỗi thành từng từ riêng như tôi đã đề cập.
Tôi chưa làm demo theo cách của bạn NoName nhé nhưng tôi cũng cùng quan điểm với bác NoName vì đây cũng là cách giống như bạn dùng Tag trong các bài viết để tiện cho công cụ tìm kiếm vậy.
Ứng với mỗi cách trên, Table sẽ phản hồi khác nhau, các bạn tham khảo.
Mã PHP:Public Function ChuoiTK(A As String, fldName As String) As String
Dim arrChuoi() As String
Dim i As Integer
ChuoiTK = ""
arrChuoi = Split(Trim(A), " ")
For i = LBound(arrChuoi) To UBound(arrChuoi)
ChuoiTK = ChuoiTK & "[" & fldName & "] Like " & "'*" & Trim(arrChuoi(i)) & "*' OR "
Next i
ChuoiTK = Left$(ChuoiTK, Len(ChuoiTK) - 3)
Erase arrChuoi
End Function
* Chú ý: Nếu bạn thay toán tử "OR" thành "AND" trong câu lệnh trên thì kết quả tìm kiếm sẽ được giới hạn nhanh hơn bù lại sẽ không đa dạng bằng "OR".
Có sửa cái hàm của anh tranthanhan1962 lại chút vì dư các dấu nháy đơn " ' " và "&".
Mã PHP:Public Function ChuyenDoi(A As String) As String
ChuyenDoi = "'*" & Replace(A, " ", "*") & "*'"
End Function -
RE: Lập tìm kiếm theo cách ngẫu hứng
ledangvan > 07-06-20, 09:36 AM
(06-06-20, 05:24 PM)ongke0711 Đã viết: Làm demo cho các bạn tham khảo.
Link: https://drive.google.com/file/d/1VyOaniI...sp=sharing
Tôi làm theo 2 cách:
- Cách dùng hàm Replace () của bạn Thuyyeu99.
- Cách tách chuỗi thành từng từ riêng như tôi đã đề cập.
Tôi chưa làm demo theo cách của bạn NoName nhé nhưng tôi cũng cùng quan điểm với bác NoName vì đây cũng là cách giống như bạn dùng Tag trong các bài viết để tiện cho công cụ tìm kiếm vậy.
Ứng với mỗi cách trên, Table sẽ phản hồi khác nhau, các bạn tham khảo.
Mã PHP:Public Function ChuoiTK(A As String, fldName As String) As String
Dim arrChuoi() As String
Dim i As Integer
ChuoiTK = ""
arrChuoi = Split(Trim(A), " ")
For i = LBound(arrChuoi) To UBound(arrChuoi)
ChuoiTK = ChuoiTK & "[" & fldName & "] Like " & "'*" & Trim(arrChuoi(i)) & "*' OR "
Next i
ChuoiTK = Left$(ChuoiTK, Len(ChuoiTK) - 3)
Erase arrChuoi
End Function
Có sửa cái hàm của anh tranthanhan1962 lại chút vì dư các dấu nháy đơn " ' " và "&".
Mã PHP:Public Function ChuyenDoi(A As String) As String
ChuyenDoi = "'*" & Replace(A, " ", "*") & "*'"
End Function
Quá tuyệt vời luôn, Ongke0711 cho anh hỏi thêm, muốn tìm ở nhiều cột thì viết thêm như nào ví dụ : Tìm kết quả của cột Hovaten và cột NoiO ...
-
RE: Lập tìm kiếm theo cách ngẫu hứng
ledangvan > 07-06-20, 11:06 AM
Sau khi "Châm cứu" File của Ongke0711 mình đã thỏa mãn với câu hỏi về cách tìm kiếm ngẫu nhiên, xin cảm ơn Noname, Bác Ân, Ongke0711 và mọi người. Tôi có chỉnh sửa đôi chút để tìm kiếm ở nhiều cột.
File đã chỉnh sửa :
http://www.mediafire.com/file/98xnvq142a...1.mdb/file