• Tạo form tìm kiếm theo nhiều tiêu chí khác nhau
  • Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    khanhduycsgt > 24-06-12, 07:45 PM

    Mình cũng biết được cách làm thông qua 1 trang web hướng dẫn trên mạng, mình cũng tự mò và cũng phát triển thêm về cách thức tạo form tìm kiếm theo nhiều tiêu chí khác nhau này.

    Cách này dựa trên tìm kiếm bằng câu lệnh SQL.
    Ví dụ ta có table tblTHONGTIN có các field như sau: MaCB, Hovaten, Ngaysinh, Quequan, Dantoc
    Giờ ta muốn tạo 1 form tìm kiếm với tất cả các tiêu thí hoặc một vài tiêu chí trong các field trên, dạng như form này:

    [Hình: 1.jpg]

    - Ta tạo các textbox để nhập khóa tìm kiếm lần lượt có tên là: txtMaCB, txtHovaten, txtNgaysinh, txtQuequan, txtDantoc
    - Tạo 1 Listbox tên là lstDANHSACH để chứa kết quả tìm kiếm, listbox này không cần thiết phải đặt rowsource, ta chỉ chỉnh số CoulumWidths sao cho hiển thị đẹp và phù hợp với độ dài text trong field là được.

    Code cho nút cmdTimkiem như sau:
    Mã:
    Dim s, s1, s2, s3, s4, s5 As String 'Khai bao cac bien chua thong tin

    'Day la dong lenh SQL de apply cho lstDANHSACH.rowsource:
    s = "SELECT tblTHONGTIN.MaCB, tblTHONGTIN.Hovaten, tblTHONGTIN.Ngaysinh, tblTHONGTIN.Quequan, tblTHONGTIN.Dantoc FROM tblTHONGTIN WHERE (1=1"

    'Day la cac phan mo rong de chen vao sau doan SQL tren:
    s1 = " AND ((tblTHONGTIN.MaCB) = " & [txtMaCB] & ")"
    s2 = " AND ((tblTHONGTIN.Hovaten) like '" & "*" & [txtHovaten] & "*" & "')"
    s3 = " AND ((tblTHONGTIN.Ngaysinh)=" & [txtNgaysinh & ")"
    s4 = " AND ((tblTHONGTIN.Quequan) like '" & "*" & [txtQuequan] & "*" & "')"
    s5 = " AND ((tblTHONGTIN.Dantoc)=" & Me.txtDantoc & ")"

    'Cu moi textbox co du lieu thi se chen dieu kien loc vao doan SQL tren:
    If IsNull(Trim(txtMaCB)) = False Then
    s = s + s1
    End If
    If IsNull(Trim(txtHovaten)) = False Then
    s = s + s2
    End If
    If IsNull(Trim(txtNgaysinh)) = False Then
    s = s + s3
    End If
    If IsNull(Trim(txtQuequan)) = False Then
    s = s + s4
    End If
    If IsNull(Trim(txtDantoc)) = False Then
    s = s + s5
    End If

    'Chen them phan duoi ket thuc cu phap lenh SQL tren:
    Me.lstDANHSACH.RowSource = s & ") ORDER BY tblTHONGTIN.MaCB; "
    Me.lstDANHSACH.Requery

    File demo là Phần mềm Quản lý Cán Bộ dành cho các cơ quan Hành Chính Đảng, phần mềm có tích hợp chức năng khóa menu, export file excel:

    http://www.mediafire.com/?v5t1866h6hcdx7t
    * Trong file đính kèm có file word hướng dẫn cách sử dụng

    Cảm ơn các bạn đã đọc bài viết!
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    uronmapu > 24-06-12, 07:51 PM

    Thanks

    Bài hay
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    khanhduycsgt > 24-06-12, 07:53 PM

    Thanks bạn, mình cũng thử tìm xem đã có chủ đề này hay chưa rồi mình mới viết. Cũng không bít là chủ đề đã có đăng rồi
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    phongld > 12-07-12, 03:14 PM

    [font=Arial][size=medium]
    Làm ơn cho mình hỏi!
    Mình cần tạo Form lọc danh sách khách hàng theo khoản ngày như sau:
    - Form gồm 2 textbox cho nhập: từ ngày, đến ngày (kiểu dd/mm/yyyy), 2 nút lệnh là "Tìm" và "Đóng"
    - Yêu cầu:
    + Khi mở form này lên thì 2 ô textbox mặc định là rỗng (không có dữ liệu)
    + Khi bấm nút tìm: Nếu 1 trong hai hoặc cả 2 textbox rỗng thì báo "Vui lòng nhập ngày cần tìm". Nếu đã nhập thì cho mở Query mà chỉ hiển thị những khách hàng có "NgayTC" (tiêu đề của cột trong Query) nằm trong khoản ngày đã nhập ở 2 textbox trên.
    + Khi bấm nút đóng thì cho đóng form và không lưu.

    Mình muốn viết bằng lệnh VBA, mong các bạn và admin giúp đỡ! Cảm ơn rất nhiều!
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    khanhduycsgt > 04-08-12, 11:01 AM

    + Khi mở form này lên thì 2 ô textbox mặc định là rỗng (không có dữ liệu):
    trong sự kiện form_load thì viết code đặt giá trị: textbox = ""

    + Khi bấm nút tìm: Nếu 1 trong hai hoặc cả 2 textbox rỗng thì báo "Vui lòng nhập ngày cần tìm". Nếu đã nhập thì cho mở Query mà chỉ hiển thị những khách hàng có "NgayTC" (tiêu đề của cột trong Query) nằm trong khoản ngày đã nhập ở 2 textbox trên:
    Sử dụng hàm If...else:
    If textboxTungay = "" or textboxDenngay = "" then
    msgbox "Vui lòng nhập ngày cần tìm"
    else
    'viết code tìm kiếm ở đây
    end if

    + Khi bấm nút đóng thì cho đóng form và không lưu:
    If me.Dirty = True then
    me.Undo
    else
    docmd.Close
    end if
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    pmt007 > 30-09-12, 09:34 PM

    muôn tìm code của nút tìm kieems, nhưng ví dụ mình nhập vào tên thì sẽ hiển thị những nguoi tên tương tự, đại loại giống như anh gu gồ
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    cpucloi > 02-10-12, 09:29 PM

    Bạn tạo query có điều kiện IN(.......) và sử dụng even trong thuộc tính onchange của txtnoidungtimkiem

    :X
    Lightbulb
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    khactiep > 21-04-13, 10:05 PM

    khó hiểu quá, do mình chưa hiểu thì phải, thanks nhé! Thấy hay!007
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    huyvu333 > 10-04-14, 08:26 PM

    Co pro nao chỉ mình với
    tại sao access 2007 hok hiểu hàm "left" zậy??
    vây mình phải dùng hàm zì để lọc
    VD: MH001; MH002; MK001; MM002
    Mình mún lọc theo chữ cái.
    giúp minh với
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    duyetnc > 12-04-14, 07:14 PM

    Cách này rất hay.

    Tôi có thêm 2 gợi ý khác mà bạn không cần hiểu biết biết nhiều về các hàm, về VBA.

    1. Tìm theo ID duy nhất (form ko liên kết dữ liệu):

    - Dùng Macro để lọc, trong code nút tìm kiếm cho chạy Macro này.

    - Dùng hàm Dlookup trong VBA để hiển thị các thông tin cần hiển thị (tìm dựa trên ID kia)

    2. Tìm theo ký tự bạn muốn tìm (form có liên kết dữ liệu).

    - Dùng Macro để lọc, trong code nút tìm kiếm cho chạy Macro này.

    - Định dạng form hiển thị kiểu danh sách ngang.

    Tạm thời gợi ý như thế đã, mem nào quan tâm và cần thêm gì thì đăng đàn nhé.

    Thân!