• Lập tìm kiếm theo cách ngẫu hứng
  • 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:
    (06-06-20, 08:57 AM)Noname Đã viết:
    (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.
    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ự.
    Phát triển ý tưởng này như sau:
    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ạ.
    Nếu vậy chỉ cần Replace Space thành * cho nó lẹ chứ tạo Column chi anh ?
    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.
    Đú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

    [Hình: glQ9uJ6.png]

    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(As StringfldName As String) As String
        Dim arrChuoi
    () As String
        Dim i 
    As Integer
        
        ChuoiTK 
    ""
        arrChuoi Split(Trim(A), " ")
        For LBound(arrChuoiTo UBound(arrChuoi)
            ChuoiTK ChuoiTK "[" fldName "] Like " "'*" Trim(arrChuoi(i)) & "*' OR "
        Next i
        ChuoiTK 
    Left$(ChuoiTKLen(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(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

    [Hình: glQ9uJ6.png]

    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(As StringfldName As String) As String
        Dim arrChuoi
    () As String
        Dim i 
    As Integer
        
        ChuoiTK 
    ""
        arrChuoi Split(Trim(A), " ")
        For LBound(arrChuoiTo UBound(arrChuoi)
            ChuoiTK ChuoiTK "[" fldName "] Like " "'*" Trim(arrChuoi(i)) & "*' OR "
        Next i
        ChuoiTK 
    Left$(ChuoiTKLen(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(As String) As String
        ChuyenDoi 
    "'*" Replace(A" ""*") & "*'"
    End Function 

    Quá tuyệt vời luôn  007 , 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