• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Tìm kiếm nhiều điều kiện

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Điều hành viên: tungblt

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Bảy 02/06/2018 12:59 am

Mình có bài tập như file đã gửi. Mình muốn tìm theo nhiều điều kiện khác nhau khi tích vào checkbox.
Nếu check vào đâu thì nó sẽ tìm theo diều kiện check. Còn không thì ngược lại.
Cái cách mình làm có khả năng ra nhưng nó dài và không thông minh cho lắm.
Các bạn giúp mình tìm cách tối ưu. Thanks.
Tập tin đính kèm
testmoi.rar
(13.27 KiB) Đã tải 13 lần



Hình đại diện của người dùng
xuanha
Guru
Guru
Bài viết: 1230
Ngày tham gia: T.Năm 19/08/2010 4:25 pm
Đến từ: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 time
Been thanked: 380 time
Liên hệ:

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi xuanha » T.Hai 04/06/2018 2:25 pm

Toàn bộ bài của bạn được sửa lại như dưới đây, tại sao lại làm vậy thì bạn suy nghĩ một chút nhé
  1. Private Sub txthoten_Change()
  2. Check2.Tag = "hoten='" & txthoten.Text & "'"
  3. End Sub
  4.  
  5. Private Sub txtlop_Change()
  6. Check1.Tag = "lop='" & txtlop.Text & "'"
  7. End Sub
  8.  
  9. Private Sub txtnamsinh_Change()
  10. Check3.Tag = "namsinh='" & txtnamsinh.Text & "'"
  11. End Sub
  12.  
  13. Private Sub Command1_Click()
  14. Dim clt As Control
  15. Dim x As String
  16. If Check1.Value = 0 And Check2.Value = 0 And Check3.Value = 0 Then Exit Sub
  17. For Each clt In Me.Controls
  18. If TypeOf clt Is CheckBox Then
  19. If clt.Value = 1 Then x = IIf(x <> "", x & " and " & clt.Tag, x & clt.Tag)
  20. End If
  21. Next
  22. If rs.State = 1 Then: rs.Close
  23. rs.Open "Select *From test where " & x, cn, adOpenDynamic, adLockBatchOptimistic
  24. Set DataGrid1.DataSource = rs
  25. End Sub
  26.  
  27. Private Sub Form_Load()
  28. ketnoi
  29. End Sub

Untitled.png

Tham khảo file đính kèm
testmoi1.rar
(14.07 KiB) Đã tải 8 lần
Kiểm phiếu Đại hội Đoàn, Đại hội Đảng
http://caulacbovb.com/forum/viewtopic.php?t=23599

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Hai 04/06/2018 9:55 pm

Cái này đúng là nằm ngoài khả năng của mình.
Hôm trước mình có làm cái này để hiểu nhưng ứng dụng sang database thì chưa biết. Thanks bạn
Cái hôm trước mình làm thế này.
Tập tin đính kèm
textboxcheck.rar
(1.49 KiB) Đã tải 7 lần

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Hai 04/06/2018 11:02 pm

Bạn cho mình hỏi nếu mình thêm 1 textbox về năm sinh. Có nghĩa Tìm kiếm từ năm này đến năm này thì phải dùng thêm điều kiện gì nữa không ?

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Ba 05/06/2018 2:56 am

Mình thêm 1 trường năm sinh nữa trong Access ( cũng để ở dạng TEXT)
Nhưng khi chạy lên thì không được. Nó chỉ chạy dc năm cố định thôi.
Còn khoảng cách giữa các năm thì datagrid không hiển thị.
Nếu chạy câu lệnh between thì text năm sinh phải ở dạng số.
Nhưng mình thấy điều kiện ở đây là "and" vậy sao nó không kết hợp giữa 2 ô năm sinh với nhau đc nhỉ
Trong khi đó chỉ có 1 trong 2 ô năm sinh kết hợp đc với các checkbox còn lại.
Nhờ bạn chỉ giúp.
Tập tin đính kèm
testmoilailsi.rar
(13.32 KiB) Đã tải 5 lần

Hình đại diện của người dùng
xuanha
Guru
Guru
Bài viết: 1230
Ngày tham gia: T.Năm 19/08/2010 4:25 pm
Đến từ: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 time
Been thanked: 380 time
Liên hệ:

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi xuanha » T.Ba 05/06/2018 8:41 am

1. Mình không hiểu bạn dùng between thì lấy trường nào hoặc tiêu chí nào để thực hiện.
2. Năm sinh 1 và năm sinh 2 có giá trị bằng nhau thì không có khoảng cách giữa chúng.
3. Chuyển đổi dữ liệu về cùng một kiểu số để so sánh thì không có gì khó. VD: val(namsinh) between 1978 and 2001.
Kiểm phiếu Đại hội Đoàn, Đại hội Đảng
http://caulacbovb.com/forum/viewtopic.php?t=23599

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Ba 05/06/2018 9:56 am

Vậy trong trường hợp này không dùng between thì dùng điều kiện nào để lọc dữ liệu trong khoảng cách các năm. Mình thử đủ kiểu theo hiểu biết của mình rồi vẫn không ra.

Hình đại diện của người dùng
xuanha
Guru
Guru
Bài viết: 1230
Ngày tham gia: T.Năm 19/08/2010 4:25 pm
Đến từ: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 time
Been thanked: 380 time
Liên hệ:

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi xuanha » T.Ba 05/06/2018 11:12 am

Bạn có thể dùng bất kỳ phương thức nào cũng được, miễn là ra được kết quả và nhanh, gọn nhất. Nhưng bạn dùng nó vào mục đích gì trong bài này
Kiểm phiếu Đại hội Đoàn, Đại hội Đảng
http://caulacbovb.com/forum/viewtopic.php?t=23599

allthing1
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Ba 18/03/2014 5:38 pm

Re: Tìm kiếm nhiều điều kiện

Gửi bàigửi bởi allthing1 » T.Tư 06/06/2018 6:17 pm

Mình sử dụng cách: bỏ check.tag 2 giá trị nam sinh. Sử dụng cậu truy vấn: rs.Open "Select *From test where ns between " & val(txtns1.text)&" and " &val(txtns2.text) &" and "& x &"", cn, adOpenDynamic, adLockBatchOptimistic.


Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.7 khách