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

Liên hệ QC

alohn

Thành viên chính thức
Tham gia
21/12/07
Bài viết
59
Được thích
13
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.
 
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

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

[GPECODE=sql]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

[/GPECODE]
 
Web KT
Back
Top Bottom