Lấy tiêu đề của các trường

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

Mình thực hiện kết nối đến CSDL SQL thông qua ADO, dữ liệu đã truy vấn được, nhưng không hiện dòng tiêu đề của các trường, nhờ các cao thu chỉ dẫn làm thế nào khi truy xuất lấy được tên trường của bảng truy vấn. Làm thế nào để có thể đặt Name cho bảng truy vấn đó luôn. Cảm ơn mọi người nhiều.

Sub ketnoiSQL()

Public cnn As New ADODB.Connection, rs As ADODB.Recordset, mySql As String
Dim gServerName As String, gdatabase As String, gUID As String, gPwd As String
cnn.Open "Driver=SQL Server;Server=" & gServerName & ";UID=" & gUID & ";PWD=" & gPwd & ";DATABASE=" & gdatabase & ""
    Set rs = New ADODB.Recordset

mySql = mySql & "Select B.InventoryItemCode, A.Unit, A.UnitPrice, A.RefDate From dbo.InventoryLedger As A Join" & vbCrLf
        mySql = mySql & "(Select IL.InventoryItemID, II.InventoryItemCode As InventoryItemCode, Max(IL.RefDate) As RefDate " & vbCrLf
        mySql = mySql & "FROM dbo.InventoryLedger As IL INNER JOIN dbo.InventoryItem As II ON IL.InventoryItemID = II.InventoryItemID " & vbCrLf
        mySql = mySql & "Where IL.AccountNumber = '152' and IL.CorrespondingAccountNumber = '331' Group by II.InventoryItemCode, IL.InventoryItemID " & vbCrLf
        mySql = mySql & ") As B On A.RefDate = B.Refdate and A.InventoryItemID = B.InventoryItemID" & vbCrLf
        mySql = mySql & "Where A.AccountNumber = '152' and A.CorrespondingAccountNumber = '331' "
                    rs.Open mySql, cnn, adOpenKeyset, adLockOptimistic

Sheet18.Range("D4").CopyFromRecordset rs

End sub

Nếu biết sử dụng Object và Collection thì biết cách lấy tên.
Trong cái Recordset Object có một cái Collection tên là Fields. Các phần tử của Fields có một thuộc tính tên là Name.

Lấy tiêu đề cột bạn thử test code sau:

Sub ketnoiSQL()
Dim cnn As New ADODB.Connection, rs As ADODB.Recordset, mySql As String, col As Integer
Dim gServerName As String, gdatabase As String, gUID As String, gPwd As String
cnn.Open "Driver=SQL Server;Server=" & gServerName & ";UID=" & gUID & ";PWD=" & gPwd & ";DATABASE=" & gdatabase & ""
Set rs = New ADODB.Recordset
mySql = mySql & "Select B.InventoryItemCode, A.Unit, A.UnitPrice, A.RefDate From dbo.InventoryLedger As A Join" & vbCrLf
mySql = mySql & "(Select IL.InventoryItemID, II.InventoryItemCode As InventoryItemCode, Max(IL.RefDate) As RefDate " & vbCrLf
mySql = mySql & "FROM dbo.InventoryLedger As IL INNER JOIN dbo.InventoryItem As II ON IL.InventoryItemID = II.InventoryItemID " & vbCrLf
mySql = mySql & "Where IL.AccountNumber = '152' and IL.CorrespondingAccountNumber = '331' Group by II.InventoryItemCode, IL.InventoryItemID " & vbCrLf
mySql = mySql & ") As B On A.RefDate = B.Refdate and A.InventoryItemID = B.InventoryItemID" & vbCrLf
mySql = mySql & "Where A.AccountNumber = '152' and A.CorrespondingAccountNumber = '331' "
rs.Open mySql, cnn, adOpenKeyset, adLockOptimistic
For col = 0 To rs.Fields.Count - 1
       Sheet18.Cells(3, col + 4) = rs.Fields(col).Name
Next
Sheet18.Range("D4").CopyFromRecordset rs

End Sub

www.giaiphapexcel.com/diendan/threads/l%E1%BA%A5y-ti%C3%AAu-%C4%91%E1%BB%81-c%E1%BB%A7a-c%C3%A1c-tr%C6%B0%E1%BB%9Dng.83875/

Ứng dụng AI và Chat GPT trong Quản trị nhân sự
Khóa học SprinGO phù hợp

Ứng dụng AI và Chat GPT trong Quản trị nhân sự

Học xong khóa này, học viên có thể: Hiểu đúng bản chất AI, các nhóm AI phổ biến và cách AI “hoạt động” ở...

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