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

    vulhu06 > 25-04-14, 10:16 AM

    (24-06-12, 07:45 PM)khanhduycsgt Đã viết: 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í 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!

    Cám ơn bạn đã chia sẻ, mình đang rất cần tìm kiếm theo nhiều tiêu chí như thế này, mình xem qua code của bạn rồi và có một số thắc mắc.
    1. Dòng s=",,,," mình thấy where (1=1", cái này là điều kiện gì vậy ah
    2. Theo như cách viết của bạn thì muốn tìm kiếm phải nhập hết macb,hoten,dantoc,quequan,ngaysinh thì mới cho ra kết quả?? vì bạn dùng từ khóa "AND", Bài của mình gần giống như vậy, nhưng có lúc người dùng chỉ nhập MCB,hoten hoặc nhập hoten,quequan,v.vv. rồi nhấn nút "Tìm kiếm" thì phải làm sao??
    Rất mong bạn trả lời
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    khanhduycsgt > 25-04-14, 03:08 PM

    1. Cái where(1=1, mục đích là cho cái điều kiện trong where luôn đúng, vì khi các textbox kia có dữ liệu sẽ sẽ chèn thêm điều kiện vào trong where, ở ví dụ này là chèn thêm các dòng s1, s2... Vì các dòng s1, s2 bắt đầu bằng code AND nên bắt buộc phải có 1=1
    2. Vì lý do ở câu số 1 bạn hỏi mà mình đã giải thích ở trên, nên chương trình mẫu của mình có thể tìm từng tiêu chí hoặc tìm nhiều tiêu chí đều được. Bạn check lại xem nhé!
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    caytregiavn77 > 11-02-16, 03:10 AM

    Chào bạn khanhduycsgt, mình cám ơn bạn đã chia sẽ chương trình này, khi nhìn thấy bạn ghi QUy định 57 (trước là 75, nay là 57) là mình hiểu bạn làm bộ phận nào rồi... CHúc bạn luôn luôn thành đạt trong cuộc sống.
    Trân trọng
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    maidinhdan > 18-02-16, 03:51 PM

    Xem bài viết này ( có demo và hướng dẫn): [Thủ Thuật] Demo Tạo Form tìm kiếm theo nhiều điều kiện

    Hình minh họa
    [Hình: frmtimvanban.png]

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

    huuduy.duy > 03-08-16, 11:43 PM

    (24-06-12, 07:45 PM)khanhduycsgt Đã viết: 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!
    Chào các anh chị !
    Cho em hỏi, trường hợp như code trong file demo Phần mềm Quản lý Cán Bộ này thì khi tìm kiếm thì xuất dữ liệu tìm kiếm được ra listbox. Nhưng nay em muốn thay thế listbox đó thành subform thì mình chỉnh sữa lại như thế nào.
    Mong được các anh chị giúp đỡ
    Trân trọng cảm ơn
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    maidinhdan > 04-08-16, 12:26 AM

    (03-08-16, 11:43 PM)huuduy.duy Đã viết: Chào các anh chị !
    Cho em hỏi, trường hợp như code trong file demo Phần mềm Quản lý Cán Bộ này thì khi tìm kiếm thì xuất dữ liệu tìm kiếm được ra listbox. Nhưng nay em muốn thay thế listbox đó thành subform thì mình chỉnh sữa lại như thế nào.
    Mong được các anh chị giúp đỡ
    Trân trọng cảm ơn

    Xem Demo này: [Thủ Thuật] Demo Tạo Form tìm kiếm theo nhiều điều kiện

    [Hình: frmtimvanban.png]

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

    huuduy.duy > 04-08-16, 01:06 AM

    (04-08-16, 12:26 AM)maidinhdan Đã viết:
    (03-08-16, 11:43 PM)huuduy.duy Đã viết: Chào các anh chị !
    Cho em hỏi, trường hợp như code trong file demo Phần mềm Quản lý Cán Bộ này thì khi tìm kiếm thì xuất dữ liệu tìm kiếm được ra listbox. Nhưng nay em muốn thay thế listbox đó thành subform thì mình chỉnh sữa lại như thế nào.
    Mong được các anh chị giúp đỡ
    Trân trọng cảm ơn

    Xem Demo này: [Thủ Thuật] Demo Tạo Form tìm kiếm theo nhiều điều kiện

    [Hình: frmtimvanban.png]

    Thân mến!

    Cảm ơn anh!
    - Bài này em có xem qua rồi, ý của em là muốn chỉnh sửa listbox trong demo Phần mềm Quản lý Cán Bộ sang dạng subform.
    - Nhưng đối với demo tìm kiếm của anh là Continuous Forms, thì mình chuyển sang dạng Mainform và subform được không anh.
    - Em có câu Query như sau.

    SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu, tbMabophan.TenBophan

    FROM (tbMabophan INNER JOIN tbNhanvien ON tbMabophan.MaBophan = tbNhanvien.MaBophan) INNER JOIN B_ViecRieng ON tbNhanvien.MaNhanvien = B_ViecRieng.Manhanvien;[/code]

    Nhưng khi áp dụng vô trong đoạn code này 

    ................................

    Mã:
    s = "SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu, tbMabophan.TenBophan WHERE (1=1"


    Tới đoạn code này em đổi điều kiện thành


    Trích dẫn:s1 = " AND ((tbNhanvien.MaCBTennhanvien= " & [txtHoVaTen] & ")"

    s2 = " AND ((B_ViecRieng.LyDo.LyDo) like '" & "*" & [txtLydo] & "*" & "')"

    .................................

    Nhưng không ra kết quả
    Nhờ anh giúp đỡ
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    maidinhdan > 04-08-16, 09:41 PM

    (04-08-16, 01:06 AM)huuduy.duy Đã viết: Cảm ơn anh!
    - Bài này em có xem qua rồi, ý của em là muốn chỉnh sửa listbox trong demo Phần mềm Quản lý Cán Bộ sang dạng subform.
    - Nhưng đối với demo tìm kiếm của anh là Continuous Forms, thì mình chuyển sang dạng Mainform và subform được không anh.
    - Em có câu Query như sau.

    SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu, tbMabophan.TenBophan

    FROM (tbMabophan INNER JOIN tbNhanvien ON tbMabophan.MaBophan = tbNhanvien.MaBophan) INNER JOIN B_ViecRieng ON tbNhanvien.MaNhanvien = B_ViecRieng.Manhanvien;[/code]

    Nhưng khi áp dụng vô trong đoạn code này 

    ................................

    Mã:
    s = "SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu, tbMabophan.TenBophan WHERE (1=1"


    Tới đoạn code này em đổi điều kiện thành


    Trích dẫn:s1 = " AND ((tbNhanvien.MaCBTennhanvien= " & [txtHoVaTen] & ")"

    s2 = " AND ((B_ViecRieng.LyDo.LyDo) like '" & "*" & [txtLydo] & "*" & "')"

    .................................

    Nhưng không ra kết quả
    Nhờ anh giúp đỡ

    Khi bạn gõ code như vậy tôi hiểu là bạn đang viết Code trên VBA của Access.

    => Và câu kết luận là, xem lại cách phát biểu code. sẽ không bao giờ ra đâu.

    Đề nghị: sao bạn không gửi chính cái file của bạn lên đây, mà lấy bài của người khác để hỏi...mà hỏi câu khác nửa thì giống như bạn đang làm cho những người giúp bạn giống như: " Thức ra trong mộng lại nằm trong mơ."

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

    huuduy.duy > 04-08-16, 10:29 PM

    (04-08-16, 09:41 PM)maidinhdan Đã viết: Khi bạn gõ code như vậy tôi hiểu là bạn đang viết Code trên VBA của Access.

    => Và câu kết luận là, xem lại cách phát biểu code. sẽ không bao giờ ra đâu.

    Đề nghị: sao bạn không gửi chính cái file của bạn lên đây, mà lấy bài của người khác để hỏi...mà hỏi câu khác nửa thì giống như bạn đang làm cho những người giúp bạn giống như: " Thức ra trong mộng lại nằm trong mơ."

    Thân mến!
    Em mượn bài người khác là do thấy gần giống nhu cầu tìm kiếm của mình nên không muốn tạo topic mới.
    Em có làm form tìm kiếm nhiều điều kiện bằng query, nhưng đến phần tìm theo dạng từ ngày đến ngày, và quý em không biết làm như thế nào, nhờ anh giúp đỡ.
    Trân trọng cảm ơn anh
    https://drive.google.com/file/d/0Bz23-2t...sp=sharing

    Trích dẫn:from maidinhdan: file *.accb mình không hỗ trợ được, bạn nào cài xin giúp đỡ dùm.
  • RE: Tạo form tìm kiếm theo nhiều tiêu chí khác nhau

    NguyenDungAnh > 11-08-18, 07:46 PM

    Cám ơn bài viết hay, bên cạnh cái tìm kiếm trong file còn có code bảo vệ file rất hay nữa 
    5 sao cho chủ top