Khai thác và tùy biến thêm, sửa, xuất file và lấy dữ liệu từ Recordset (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tiếp tục với dữ liệu bài 1, với đoạn truy vấn sau:

Mã:
"Select * from [Sheet1$]"

Làm cách nào ta lấy dữ liệu 2 cột đầu và 5 dòng cuối của bảng. Kết quả như sau:

1604992549657.png
 
Làm cách nào ta lấy dữ liệu 2 cột đầu và 5 dòng cuối của bảng. Kết quả như sau:

View attachment 249032

Lấy cột thì tôi chỉ biết dùng GetRows, còn cách khác thì chưa biết. (Không tính dùng đến câu lệnh SQL)

Mã:
.Move .RecordCount - 5
varBookmark = .Bookmark
varArray = .GetRows(5, varBookmark, Fields:=Array("ID", "Code"))
Sheet2.Range("A3:B7").Value = Application.WorksheetFunction.Transpose(varArray)
 
Lấy cột thì tôi chỉ biết dùng GetRows, còn cách khác thì chưa biết. (Không tính dùng đến câu lệnh SQL)

Mã:
.Move .RecordCount - 5
varBookmark = .Bookmark
varArray = .GetRows(5, varBookmark, Fields:=Array("ID", "Code"))
Sheet2.Range("A3:B7").Value = Application.WorksheetFunction.Transpose(varArray)
có cách nào khác mà ko xài Transpose không bạn nhỉ ?
 
2 cột thì đoạn này sửa lại thôi, dòng thì em không biết dòng cuối lùi lại 5 tính làm sao cả :D
Rich (BB code):
Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
 
Lấy cột thì tôi chỉ biết dùng GetRows, còn cách khác thì chưa biết. (Không tính dùng đến câu lệnh SQL)

Mã:
.Move .RecordCount - 5
varBookmark = .Bookmark
varArray = .GetRows(5, varBookmark, Fields:=Array("ID", "Code"))
Sheet2.Range("A3:B7").Value = Application.WorksheetFunction.Transpose(varArray)
Duyệt qua từng field được mà bạn
có cách nào khác mà ko xài Transpose không bạn nhỉ ?
Đưa vào listbox rồi đưa xuống, tuy nhiên nó chậm lắm.
 
2 cột thì đoạn này sửa lại thôi, dòng thì em không biết dòng cuối lùi lại 5 tính làm sao cả :D
Rich (BB code):
Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
Lấy số tổng của dòng - 5, di chuyển đến kết quả đó. Bài #44 của bạn @ongke0711 có rồi đó bạn.
 
hay đấy

Mã:
Sheet2.Range("A2").CopyFromRecordset .DataSource, , 3     ''Lay 3 cot
Sheet2.Range("A2").CopyFromRecordset .DataSource, , 1     ''Lay 1 cot

thì nó cũng trên nguyên tắc Rs(dòng, cột) thui mà -0-0-0-
 
Tiếp tục với dữ liệu bài 1, với đoạn truy vấn sau:

Mã:
"Select * from [Sheet1$]"

Làm cách nào ta lấy dữ liệu 2 cột đầu và 5 dòng cuối của bảng. Kết quả như sau:

View attachment 249032
Hehe em đã làm được:
Mã:
Sub LayDL_HLMT1()
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        Debug.Print .RecordCount
        .Move .RecordCount - 5
        Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
    End With
End Sub
 
Hehe em đã làm được:
Mã:
Sub LayDL_HLMT1()
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        Debug.Print .RecordCount
        .Move .RecordCount - 5
        Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
    End With
End Sub
Ghi tên cột xuống sheet luôn nhé bạn.
 
Hehe em đã làm được:
Mã:
Sub LayDL_HLMT1()
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        Debug.Print .RecordCount
        .Move .RecordCount - 5
        Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
    End With
End Sub
vầy đi chon gọn move làm chi nữa
Mã:
Sub LayDL2_HLMT1()
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        Debug.Print .RecordCount
        ''.Move .RecordCount - 5
        Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
    End With
End Sub

á vậy thì ra nó lấy 5 dòng trên -0-0-0-
 
vầy đi chon gọn move làm chi nữa
Mã:
Sub LayDL2_HLMT1()
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        Debug.Print .RecordCount
        ''.Move .RecordCount - 5
        Sheet2.Range("A2").CopyFromRecordset .DataSource, 5, 2
    End With
End Sub

á vậy thì ra nó lấy 5 dòng trên -0-0-0-
Không move sao lấy được dòng cuối anh?
 
Dễ với các anh chị, khó với em :D
Bạn mượn bài của anh @ongke0711 thêm cáu Array(2,3,5) vô
Bài đã được tự động gộp:

Mã:
    With CreateObject("ADODB.Recordset")
        .Open ("Select * from [Sheet1$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 1
        .Move .RecordCount - 5
        ArrData = Application.Transpose(.GetRows(, , Array(1, 2, 4)))
        Sheet2.Cells(1).Resize(UBound(ArrData), UBound(ArrData, 2)).Value = ArrData
    End With
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom