Đánh giá chủ đề:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hướng dẫn] Tạo form tìm kiếm theo nhiều tiêu chí khác nhau
#1
Lightbulb 
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ữ ký của khanhduycsgt Chào Guest, có mánh nào hay thì chia sẻ cho mình biết với nhé! Và hãy thanks bằng cách bấm nút Thanks để tỏ rõ mình là người lịch sự nào! ^^
Reply
#2
Thanks

Bài hay
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn khanhduycsgt , pmt007
#3
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
Chữ ký của khanhduycsgt Chào Guest, có mánh nào hay thì chia sẻ cho mình biết với nhé! Và hãy thanks bằng cách bấm nút Thanks để tỏ rõ mình là người lịch sự nào! ^^
Reply
Những người đã cảm ơn phongld , alilibababa , pmt007 , TruongVanTruong
#4
[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!
Chữ ký của phongld Xin chào, mình là phongld, Tham gia http://thuthuataccess.com/forum từ ngày 21-06 -12.
Reply
Những người đã cảm ơn
#5
+ 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
Chữ ký của khanhduycsgt Chào Guest, có mánh nào hay thì chia sẻ cho mình biết với nhé! Và hãy thanks bằng cách bấm nút Thanks để tỏ rõ mình là người lịch sự nào! ^^
Reply
Những người đã cảm ơn
#6
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ồ
Chữ ký của pmt007 Xin chào, mình là pmt007, Tham gia http://thuthuataccess.com/forum từ ngày 30-09 -12.
Reply
Những người đã cảm ơn
#7
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
Chữ ký của cpucloi Tôi chỉ biết mỗi một điều là những điều tôi biết được còn quá ít 021
Gmail: cpucloi@gmail.com
Yahoo: cpucloi@yahoo.com.vn
Skype: cpucloi
Facebook: cpucloi
Two: cpucloi

ღღღღღTài sản của cpucloi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
Rainbow 
khó hiểu quá, do mình chưa hiểu thì phải, thanks nhé! Thấy hay!007
Chữ ký của khactiep Xin chào, mình là khactiep, Tham gia http://thuthuataccess.com/forum từ ngày 19-04 -13.
Reply
Những người đã cảm ơn
#9
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
Chữ ký của huyvu333 Xin chào, mình là huyvu333, Tham gia http://thuthuataccess.com/forum từ ngày 09-04 -14.
ღღღღღTài sản của huyvu333 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#10
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!
Chữ ký của duyetnc Đỗ Tiến Duyệt
Reply
Những người đã cảm ơn dsvanminh , hienchuoi9


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Phân quyền theo nhóm honglv157 11 346 29-08-15, 06:59 PM
Bài mới nhất: tranthanhan1962
  FORM LOGIN honglv157 1 72 26-08-15, 05:27 PM
Bài mới nhất: tranthanhan1962
  Hướng Dẫn Khóa form đã mở khi mở form kế tiếp jeck09nt 3 154 24-08-15, 10:49 PM
Bài mới nhất: tranthanhan1962
  [Help] Để form access khi khởi động luôn hiển thị bản ghi cuối cùng khi đóng vinamilk0510 5 677 05-08-15, 01:45 PM
Bài mới nhất: vinamilk0510
Question Canh giữa các đối tượng trên form khi maximize hay restore form trikhoi 4 2,260 03-08-15, 11:56 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)