Lấy tiêu đề của các trường
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/
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