Dùng ADO để xuất kết quả từ 1 bảng dữ liệu nguồn và 1 bảng dữ liệu điều kiện

Liên hệ QC

johnnylinhanh

Thành viên thường trực
Tham gia
18/12/11
Bài viết
232
Được thích
179
Nghề nghiệp
Kiểm toán
Chào mọi người,
Hiện em đang vướng mắc chỗ thông thường dùng ADO để lấy dữ liệu thì tạo 1 connection và xuất kết quả thông qua "Copyfromrecordset connection.Execute(Lệnh SQL)". Tuy nhiên, nếu trong lệnh truy vấn SQL mình có điều kiện được đối chiếu từ 1 nguồn khác/ 1 connection khác thì mình sẽ phải làm như thế nào ạ?
Nhờ mọi người hướng dẫn em giải pháp với
Em gửi 2 file mẫu DataA.xlsx (file có dữ liệu) và file DATA.xlsb (file có chứa điều kiện và dùng xuất kết quả)
1648797659537.png
 

File đính kèm

  • GPE.rar
    21.1 KB · Đọc: 12
Chào mọi người,
Hiện em đang vướng mắc chỗ thông thường dùng ADO để lấy dữ liệu thì tạo 1 connection và xuất kết quả thông qua "Copyfromrecordset connection.Execute(Lệnh SQL)". Tuy nhiên, nếu trong lệnh truy vấn SQL mình có điều kiện được đối chiếu từ 1 nguồn khác/ 1 connection khác thì mình sẽ phải làm như thế nào ạ?
Nhờ mọi người hướng dẫn em giải pháp với
Em gửi 2 file mẫu DataA.xlsx (file có dữ liệu) và file DATA.xlsb (file có chứa điều kiện và dùng xuất kết quả)
View attachment 273887
Bạn chạy code sau thử nhé:

Mã:
Sub LayDL_HLMT()
    Dim cn As String
    cn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\DataA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=No"""
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From [Sheet1$] Where F1 In (Select F1 From [EXCEL 12.0;HDR=No;Database=" & ThisWorkbook.FullName & "].[Sheet1$B2:B] Where F1 Is Not Null)"), cn
        Sheet1.Range("J2").CopyFromRecordset .DataSource
    End With
End Sub
Hoặc có thể dùng SQL Join nhé.
 
Upvote 0
Bạn chạy code sau thử nhé:

Mã:
Sub LayDL_HLMT()
    Dim cn As String
    cn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\DataA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=No"""
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From [Sheet1$] Where F1 In (Select F1 From [EXCEL 12.0;HDR=No;Database=" & ThisWorkbook.FullName & "].[Sheet1$B2:B] Where F1 Is Not Null)"), cn
        Sheet1.Range("J2").CopyFromRecordset .DataSource
    End With
End Sub
à hay quá, vậy mà nghĩ hoài không thông
Cám ơn anh HLMT nhiều nhé
 
Upvote 0
à hay quá, vậy mà nghĩ hoài không thông
Cám ơn anh HLMT nhiều nhé
Thử thêm cách này nhé:

Mã:
Sub LayDL_HLMT1()
    Dim cn As String
    cn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\DataA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=No"""
    With CreateObject("ADODB.Recordset")
        .Open ("Select a.F1,a.F2 From [Sheet1$] a Inner Join [EXCEL 12.0;HDR=No;Database=" & ThisWorkbook.FullName & "].[Sheet1$B2:B] b On a.F1=b.F1 "), cn
        Sheet1.Range("J2").CopyFromRecordset .DataSource
    End With
End Sub
 
Upvote 0
Thử thêm cách này nhé:

Mã:
Sub LayDL_HLMT1()
    Dim cn As String
    cn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\DataA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=No"""
    With CreateObject("ADODB.Recordset")
        .Open ("Select a.F1,a.F2 From [Sheet1$] a Inner Join [EXCEL 12.0;HDR=No;Database=" & ThisWorkbook.FullName & "].[Sheet1$B2:B] b On a.F1=b.F1 "), cn
        Sheet1.Range("J2").CopyFromRecordset .DataSource
    End With
End Sub
Vâng anh, cảm ơn anh rất nhiều!
Với lại em thử connect ADO với 1 File có Password thì phải mở file đó lên và mở chế độ ReadOnly:=False thì mới Connect được không biết lý do tại sao để ReadOnly:=True thì lại không cho mong anh chỉ điểm thêm
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom