Kết nối cơ sở dữ liệu và lọc nhiều điều kiện của cột Khach_hang

Liên hệ QC

anhtuan2939

Thành viên hoạt động
Tham gia
5/7/16
Bài viết
165
Được thích
130
Chào mọi người.
Mình có dữ liệu giả lập như bên dưới (phần màu xám là dữ liệu trong Access), mình dùng phương pháp ADODB để kết nối và lấy dữ liệu. Bây giờ muốn lọc cột Khach_hang với điệu kiện như cột I thì code ở phần WHERE viết như thế nào ạ để khi thay giá trị điều kiện trong cột I chạy code để lấy dữ liệu mà không cần phải đi sửa code? Xin cám ơn!

Mã:
Sub loc_nhieu_khach_hang()
    Dim cnn As Object, rst As Object
    Dim lsSQL As String
    Dim lst As Long
    Dim Arr As Variant
    Dim FileAccess
   
    FileAccess = Application.GetOpenFilename("all,*.accdb", , "Select Data base", , False)
    If VarType(FileAccess) = vbBoolean Then Exit Sub
   
    With Sheet1
        lst = .Range("I100").End(xlUp).Row
        Arr = .Range("I2:I" & lst).Value
    End With
   
    Set cnn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
       
    With cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = FileAccess
        .Open
    End With
   
        lsSQL = "SELECT * " & _
                "FROM DATA " & _
                "WHERE Khach_hang = "
        rst.Open lsSQL, cnn
       
        Sheet2.Range("A3").CopyFromRecordset (rst)
       
        Set rst = Nothing
        cnn.Close
        Set cnn = Nothing
End Sub

1605673408150.png
 
Vâng ạ. Em có dùng câu lệnh này: WHERE Khach_hang IN ('A1', 'A2', 'A3') thì code chạy bình thường, nhưng mỗi lần đổi điều kiện lọc thì phải vào sửa code, như thế này rất bất tiện cho người sử dụng. Có cách nào để khi đổi điều kiện lọc mà không cần phải sửa code ở câu điều kiện WHERE không anh?
 
Chào mọi người.
Mình có dữ liệu giả lập như bên dưới (phần màu xám là dữ liệu trong Access), mình dùng phương pháp ADODB để kết nối và lấy dữ liệu. Bây giờ muốn lọc cột Khach_hang với điệu kiện như cột I thì code ở phần WHERE viết như thế nào ạ để khi thay giá trị điều kiện trong cột I chạy code để lấy dữ liệu mà không cần phải đi sửa code? Xin cám ơn!
Cách khác:
Xem dữ liệu cột "Điều kiện lọc" là 1 table "DieuKienLoc" và:
- cách a: Select bảng chính Inner Join bảng điều kiện
- cách b: Select bảng chính WHERE Khach_hang IN (Select * from DieuKienLoc)
Cách khác nữa:
Bỏ ADO đi và dùng Power query merge 2 query
 
Em chỉnh sửa lại 1 ít và đã chạy rất tốt. Cám ơn anh nhé.
Bài đã được tự động gộp:

Cách khác:
Xem dữ liệu cột "Điều kiện lọc" là 1 table "DieuKienLoc" và:
- cách a: Select bảng chính Inner Join bảng điều kiện
- cách b: Select bảng chính WHERE Khach_hang IN (Select * from DieuKienLoc)
Cách khác nữa:
Bỏ ADO đi và dùng Power query merge 2 query
Dạ. Cám ơn thầy. Em đang nghiên cứu từng bước. Trước mắt em dùng ADO để giải quyết công việc hiện tại, ngoài ra em cũng đang học thêm Power Querry để xử lý các công việc về sau.
 
Web KT
Back
Top Bottom