Lỗi Khi lấy dữ liệu bằng ADO.

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Mọi ngời cho em hỏi lỗi này là bị Như thế nào ạ.

Sub capnhaphanghoa()
    Dim cn As Object
   Dim rst As Object, sql As String
    Dim Pro As String, lr As Long, arr3(), ten As String, i As Long, dk As String, k As Integer
   Dim Ext As String
   Dim Name As String
   Dim s1 As String, s2 As String
   s1 = "NGHI" & ChrW(7878) & "P V" & ChrW(7908)
   s2 = "xu" & ChrW(7845) & "t " & ChrW(273) & "i" & ChrW(7873) & "u chuy" & ChrW(7875) & "n"
  With Sheets("DT-DC")
       lr = .Range("a" & Rows.Count).End(xlUp).Row
       If lr > 7 Then .Range("A8:R" & lr).ClearContents
  End With
   arr3 = Array("210", "230", "250", "280", "289", "290", "293", "275")
     Set cn = CreateObject("ADODB.connection")
     Set rst = CreateObject("ADODB.recordset")
     For k = 0 To UBound(arr3)
      With Sheets("DT-DC")
       lr = .Range("a" & Rows.Count).End(xlUp).Row + 1
      End With
     Name = "C:BUILDSTOREPROJECACCOUNTBAR LIST" & arr3(k) & ".xlsx"
     Pro = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
     Ext = ";Extended Properties=""Excel 12.0;HDR=No;"";"
     cn.Open (Pro & Name & Ext)
     sql = "SELECT *from [DATA$A7:R100000] WHERE F5='a'"                  '" & "'" & s2 & "'"
    rst.Open sql, cn, 3, 1
    Sheets("DT-DC").Range("A" & lr).CopyFromRecordset rst
    rst.Close
    cn.Close
    Next k
End Sub

28872886

ADO nó ngán nhất mấy dữ liệu nguồn không chuẩn (trường số, chuỗi, định dạng … lẫn lộn), bạn gửi file lên thử xem.

Vâng anh xem hộ em.
Cái này lỗi khi em thêm điều kiện where vào mới lỗi.Mà có máy thì chạy được có máy lỗi anh à.

Bạn kiểm tra lại tên file trùng với các phần tử trong mảng này chưa: Array("210", "230", "250", "280", "289", "290", "293", "275")

Bình thường nó vẫn chạy được anh ạ.Khi em thêm điều kiện thì mới lỗi.

LUÔN LUÔN đặt cái break ở sau câu dựng lệnh sql ( sql = … ). Hiển thị xem nó ra cái gì rồi hỏi tiếp.
Có 3 lỗi sai trong code của bạn:
1/ Ở dòng sql = "SELECT *from [DATA$A7:R50000] WHERE F5='a'"
-> Đúng là: sql = "SELECT * from [DATA$A7:R50000] WHERE F5='a'"
2/ Tên file bạn gửi lên là B210, nhưng trong array là 210?
3/ Ở dòng Ext = ";Extended Properties=""Excel 12.0;HDR=No;"";"
-> Đúng là: Ext = ";Extended Properties=""Excel 12.0;HDR=No;"""

P/s: sorry bạn, cái thứ 3 không sai, chỉ dư thôi.

www.giaiphapexcel.com/diendan/threads/l%E1%BB%97i-khi-l%E1%BA%A5y-d%E1%BB%AF-li%E1%BB%87u-b%E1%BA%B1ng-ado.142470/

Xây dựng Lương 3P, KPI cho Doanh nghiệp
Khóa học SprinGO phù hợp

Xây dựng Lương 3P, KPI cho Doanh nghiệp

Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm