Đình Phán
Thành viên thường trực
- Tham gia
- 23/11/10
- Bài viết
- 232
- Được thích
- 68
- Giới tính
- Nam
- Nghề nghiệp
- kt
Chào các anh, chị.
Hiện em có dữ liệu gần 300000 dòng. Với dữ liệu có số lượng lớn như này, em sử dụng ADODB để truy vấn dữ liệu thì không ra kết quả.
Em không rõ là ADODB (kết nối đến chính sheet khác trong cùng 1 workbook) cho phép số lượng là bao nhiêu bản ghi, nhưng với các dữ liệu ít thì truy vấn nhanh, kết quả chính xác. Nhưng dữ liệu lớn thì không cho kết quả
Sau đó em có chuyển qua Mảng để lọc dữ liệu, tuy nhiên lại gặp 1 vấn đề mới là Kết quả trả ra bị thừa thêm 01 dòng ở tận cuối.
Các anh, chị xem giúp em là sai ở chỗ nào ạ.
Em cảm ơn!
Hiện em có dữ liệu gần 300000 dòng. Với dữ liệu có số lượng lớn như này, em sử dụng ADODB để truy vấn dữ liệu thì không ra kết quả.
Em không rõ là ADODB (kết nối đến chính sheet khác trong cùng 1 workbook) cho phép số lượng là bao nhiêu bản ghi, nhưng với các dữ liệu ít thì truy vấn nhanh, kết quả chính xác. Nhưng dữ liệu lớn thì không cho kết quả
Sau đó em có chuyển qua Mảng để lọc dữ liệu, tuy nhiên lại gặp 1 vấn đề mới là Kết quả trả ra bị thừa thêm 01 dòng ở tận cuối.
Các anh, chị xem giúp em là sai ở chỗ nào ạ.
Em cảm ơn!
Mã:
Public Sub Search_Credit1()
Dim MyCnn As Object
Dim MyRs As Object
Dim MySQL As String
Dim iLastRow As Long
iLastRow = ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
Set MyCnn = CreateObject("ADODB.Connection")
Set MyRs = CreateObject("ADODB.Recordset")
'ConnectionString Excel *xlsb
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myBinaryExcel2007file.xlsb;Extended Properties="Excel 12.0;HDR=YES";
MyCnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"
MySQL = "SELECT [Ma_Doi_Tuong],[Ngay_Thang],[So_Chung_Tu],[Dien_Giai],[User],[So_Tien] FROM [Credit$A:F] WHERE ([Ma_Doi_Tuong] = ""VN1"") ;"
MyRs.Open MySQL, MyCnn
Sheets("Data").Range("A" & iLastRow + 1).CopyFromRecordset MyRs
MyCnn.Close
Set MyRs = Nothing
Set MyCnn = Nothing
End Sub
Mã:
Sub Search_Credit_Arr1()
Dim Arr(), Res(), i As Long, k As Long, a As Long
Dim DongCuoi As Long
With ThisWorkbook.Sheets("Credit")
Arr = .Range("A1").CurrentRegion.Value
ReDim Res(1 To UBound(Arr), 1 To 6)
For i = 1 To UBound(Arr)
If Arr(i, 1) = "VN1" Then
k = k + 1
For a = 1 To 6
Res(k, a) = Arr(i, a)
Next a
End If
Next i
End With
DongCuoi = ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
ThisWorkbook.Sheets("Data").Range("A" & DongCuoi + 1).Resize(i, 6).Value = Res
End Sub