• 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

Moderator: tungblt

allthing1
Thành viên chính thức
Thành viên chính thức
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Sat 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.
Attachments
testmoi.rar
(13.27 KiB) Downloaded 70 times



User avatar
xuanha
Guru
Guru
Posts: 1230
Joined: Thu 19/08/2010 4:25 pm
Location: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 times
Been thanked: 380 times
Contact:

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

Postby xuanha » Mon 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) Downloaded 72 times
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
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Mon 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.
Attachments
textboxcheck.rar
(1.49 KiB) Downloaded 55 times

allthing1
Thành viên chính thức
Thành viên chính thức
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Mon 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
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Tue 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.
Attachments
testmoilailsi.rar
(13.32 KiB) Downloaded 60 times

User avatar
xuanha
Guru
Guru
Posts: 1230
Joined: Thu 19/08/2010 4:25 pm
Location: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 times
Been thanked: 380 times
Contact:

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

Postby xuanha » Tue 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
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Tue 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.

User avatar
xuanha
Guru
Guru
Posts: 1230
Joined: Thu 19/08/2010 4:25 pm
Location: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 times
Been thanked: 380 times
Contact:

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

Postby xuanha » Tue 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
Posts: 12
Joined: Tue 18/03/2014 5:38 pm

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

Postby allthing1 » Wed 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.


Return to “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Who is online

Users browsing this forum: No registered users and 7 guests