Как получить имя столбца в VBA? - PullRequest
3 голосов
/ 22 августа 2011

Я создал модуль, в котором я читаю данные из базы данных SQL с помощью хранимой процедуры, и я получаю все необходимые данные, но мое требование заключается в том, что мне также нужны все имена / заголовки столбцов.И я не могу жестко закодировать имя, потому что я преобразую строки данных в столбцы хранимой процедуры.

Вот код, который я написал:

ConnStr = "PROVIDER=SQLOLEDB.1;"
ConnStr = ConnStr & "DATA SOURCE=" & dataSrc & "; INITIAL CATALOG=" & iCatalog & "; "
ConnStr = ConnStr & "User ID = " & dbUserId & "; Password = " & dbPassword

On Error GoTo ErrHandler

DBConn.Open ConnStr

' Create a recordset object.
Dim rsCounter As ADODB.Recordset
Set rsCounter = New ADODB.Recordset
Dim startDate As String, endDate As String, query As String

query = "Exec ReadCntrs 0, '12/01/2011', '12/30/2011'"

With rsCounter
    ' Assign the Connection object.
    .ActiveConnection = DBConn

    .Open query
    ' Copy the records into cell A1 on Sheet1.
    Sheet1.Range("A1").CopyFromRecordset rsCounter

    ' Tidy up
    .Close
End With

DBConn.Close
Set rsCounter = Nothing
Set DBConn = Nothing

ExitHere:
    On Error Resume Next
    DBConn.Close: Set DBConn = Nothing
    Err.Clear
    Exit Sub

ErrHandler:
    MsgBox Err.Number & Err.Description, vbExclamation
    Resume ExitHere

End Sub

Ответы [ 2 ]

6 голосов
/ 23 августа 2011
With rsCounter
    ' Assign the Connection object.
    .ActiveConnection = DBConn

    .Open query

    ' Write the column names into cell A1 on Sheet1.
    Dim counter As Long
    For counter = 0 To rsCounter.Fields.Count - 1
      Sheet1.Range("A1").Offset(, counter).Value = rsCounter.Fields(counter).Name
    Next

    ' Copy the records into cell A2 on Sheet1.
    Sheet1.Range("A2").CopyFromRecordset rsCounter

    ' Tidy up
    .Close
End With
4 голосов
/ 22 августа 2011

rsCounter.Fields(i).Name - где i - целое число, представляющее номер поля - обычно это способ доступа к имени поля.

РЕДАКТИРОВАТЬ - также, чтобы получить общее количество полей, которые вы будете использовать rsCounter.Fields.Count

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...