Điều kiện lọc ADO

Liên hệ QC

chipiu3001

Thành viên hoạt động
Tham gia
22/8/15
Bài viết
105
Được thích
15
Chào mọi người

Mình có 1 vấn đề cần giúp đỡ

Mình tạo userform: Có listview và 2 textbox

Dùng ADO để lọc dữ liệu điều kiện ( 2 textbox) trên CSDL chuyển lên listview.

Mình dùng ...Form... Where (CộtA)=textbox1 and (CộtB)=textbox2 => Chạy OK nếu điền đúng điều kiện.

Vấn đề: Nếu không điền dữ liệu vào textbox thì nó coi giá trị textbox=0 ==> Search không thấy.
Mong muốn Khi không điền dữ liệu vào textbox nào thì coi như không có điều kiện ở textbox đó

VD: Textbox1 không có dữ liệu, Textbox2 có có dữ liệu=> ...Form... Where (CộtB)=textbox2
Textbox1 có dữ liệu,Textbox2 không có dữ liệu=> ...Form... Where (CộtB)=textbox1
Textbox1 không có dữ liệu,Textbox2 không có dữ liệu=> chỉ là select ...form.... thôi.

Kiến thức của mình có hạn, có chăng dùng được IF...then.. nhưng dài dòng.

Mong các bạn giúp đỡ.

Mình cảm ơn
 
VD: Textbox1 không có dữ liệu, Textbox2 có có dữ liệu=> ...Form... Where (CộtB)=textbox2
Textbox1 có dữ liệu,Textbox2 không có dữ liệu=> ...Form... Where (CộtB)=textbox1
Textbox1 không có dữ liệu,Textbox2 không có dữ liệu=> chỉ là select ...form.... thôi.

bác thử cách này , nhưng cách này cũng có cái hạn chế !

select *
from table1
where cotA like textbox1 & "%" and cotB like textbox2 & "%"


nếu dấu % không đc thì thử với dấu * , hoặc textbox1 ko đc thì thử với textbox1.txt
sql trong access với sql sever hình như khác nhau tí !
 
Lần chỉnh sửa cuối:
Upvote 0
bác thử cách này , nhưng cách này cũng có cái hạn chế !

select *
from table1
where cotA like textbox1 & "%" and cotB like textbox2 & "%"


nếu dấu % không đc thì thử với dấu * , hoặc textbox1 ko đc thì thử với textbox1.txt
sql trong access với sql sever hình như khác nhau tí !
Dùng hàm iif kết hợp với len để xử lý, nếu nối chuỗi đơn thuần như bạn thì sẽ có vấn đề khi lọc dữ liệu.
 
Upvote 0
Dùng hàm iif kết hợp với len để xử lý, nếu nối chuỗi đơn thuần như bạn thì sẽ có vấn đề khi lọc dữ liệu.

Gửi anh

Anh giúp em chuỗi Từ Where kết hợp với hàm IIf xử lý yêu cầu trên với ạ.

Em làm mà không được ạ.

Em cảm ơn anh nhiều.
 
Upvote 0
Gửi anh

Anh giúp em chuỗi Từ Where kết hợp với hàm IIf xử lý yêu cầu trên với ạ.

Em làm mà không được ạ.

Em cảm ơn anh nhiều.
Đọc lại ví dụ của bạn thì tôi tạm làm như sau:
Mã:
Sub Test()
    Dim strSQL As String, strWhere As String
    If Len(TextBox1.Text) = 0 And Len(TextBox2.Text) > 0 Then
        strWhere = " where CotB ='" & TextBox2.Text & "'"
    ElseIf Len(TextBox1.Text) > 0 And Len(TextBox2.Text) = 0 Then
        strWhere = " where CotB ='" & TextBox1.Text & "'"
    Else
        strWhere = ""
    End If
    strSQL = "select * from YourTable " & strWhere
    MsgBox strSQL
    
End Sub
 
Upvote 0
Đọc lại ví dụ của bạn thì tôi tạm làm như sau:
Mã:
Sub Test()
    Dim strSQL As String, strWhere As String
    If Len(TextBox1.Text) = 0 And Len(TextBox2.Text) > 0 Then
        strWhere = " where CotB ='" & TextBox2.Text & "'"
    ElseIf Len(TextBox1.Text) > 0 And Len(TextBox2.Text) = 0 Then
        strWhere = " where CotB ='" & TextBox1.Text & "'"
    Else
        strWhere = ""
    End If
    strSQL = "select * from YourTable " & strWhere
    MsgBox strSQL
   
End Sub
Xin lỗi vì lâu không quay lại.em đã làm được từ gợi ý của anh dùng iif. Phải công nhận dùng iif ứng dụng nhiều trường hợp rất hợp lý. Em cảm ơn anh nhiều nhé.
 
Upvote 0
Web KT
Back
Top Bottom