programing

SQL 쿼리에서 열 이름을 Excel로 가져오는 중

instargram 2023. 8. 30. 21:11
반응형

SQL 쿼리에서 열 이름을 Excel로 가져오는 중

SQL 데이터베이스에서 데이터를 가져오는 데 Excel을 사용하고 있습니다.저는 다른 SO 질문의 코드를 사용했고 그것은 잘 작동합니다.이제 실제 테이블 외에 테이블에서 열 이름을 불러오려고 합니다.저는 For Each fld 루프를 사용하여 이름을 얻을 수 있다는 것을 알게 되었습니다.그러나 열 수가 변경될 수 있기 때문에 Excel에서 열을 수평으로 채우는 문제가 남아 있습니다. 그래서 각 루프에 대해 다른 F 또는 유사한 것이 필요할 것 같습니다.

Sub GetDataFromADO()

'Declare variables'
    Set objMyConn = New ADODB.Connection
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset

'Open Connection'
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;"
    objMyConn.Open

'Set and Excecute SQL Command'
    Set objMyCmd.ActiveConnection = objMyConn
    objMyCmd.CommandText = "select * from myTable"
    objMyCmd.CommandType = adCmdText
    objMyCmd.Execute

'Loop Names'
    ' WHAT TO DO HERE????'

'Open Recordset'
    Set objMyRecordset.ActiveConnection = objMyConn
    objMyRecordset.Open objMyCmd

'Copy Data to Excel'
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)

End Sub

평소 코드는 매우 유사합니다.

For intColIndex = 0 To objMyRecordset.Fields.Count - 1 
    Range("A4").Offset(0, intColIndex).Value = objMyRecordset.Fields(intColIndex).Name
Next

네, 그래서 4번의 시도 끝에 알아냈어요, 여기 루프의 코드가 있습니다.

 'Loop'
 Dim FieldRange As Range
 Set FieldRange = Range("A4")
 Set TableColumns = Range("A4:H4")
 x = 1

 Range("A4").Select

 For Each fld in objMyRecordset.Fields
      ActiveCell.Value = fld.Name
      ActiveCell.Offset(0, x).Select
      x = x + 1 'tick iterator
 Next

 ActiveSheet.Range("A5").CopyFromRecordset objMyRecordset
 Range("A4").Select

매우 단순하게 하려면 다음과 같은 작업을 수행합니다(시트 1 및 기록기 사용).

    For i = 0 To r.Fields.Count - 1
        Sheet1.Cells(1, i + 1) = r.Fields(i).Name
    Next i

x 변수를 0으로 설정한 다음 다음과 같은 작업을 수행할 수 있습니다.

x = 0

For Each Field In RS.Fields 'RS being my Recordset variable
    Range("A3").Offset(0, x).Value = Field.Name
    x = x + 1
Next Field

그리고 그것은 읽기를 조금 더 쉽게 할 것입니다... :)

언급URL : https://stackoverflow.com/questions/4190515/pulling-column-names-into-excel-from-sql-query

반응형