2013-01-01 5 views
1

다음 코드를 작성하여 oracle DB에서 테이블의 데이터를 가져오고 VBA 매크로를 사용하여 데이터를 Excel 시트로 덤프합니다.
DB의 테이블에서 데이터를 검색하고 엑셀 시트에 덤프합니다. Excel에서는 첫 번째 행을 반복해서 표시합니다. 예를 들어, DB에 45 개의 다른 행이 반환되면 Excel 시트에 45 개의 행이 반환되지만 Excel의 모든 45 개의 행은 첫 번째 행이 DB 인 것과 같습니다. DB에서 정확한 행을 얻는 방법Excel에서 매크로 VBA를 사용하여 Oracle 테이블에서 Excel로 데이터 가져 오기

하위 결과()

Dim SQL As String 
Dim OraDynaSet As Object 
Dim i As Integer 

SQL = "Select * from Employee where EmpID=20" 
Set OraDynaSet = objDataBase.DBCreateDynaset(SQL, 0&) 

    If OraDynaSet.RecordCount > 0 Then 
    'There were records retrieved 

     OraDynaSet.MoveFirst 


     For ICOLS = 0 To OraDynaSet.Fields.Count - 1 
      .Cells(1, ICOLS + 1).Value = OraDynaSet.Fields(ICOLS).Name 
     Next ICOLS 


     'Loop the recordset for returned rows 
     For i = 0 To OraDynaSet.RecordCount - 1 

      For j = 0 To ICOLS - 1 
      .Cells(2 + i, j + 1) = OraDynaSet.Fields(j).Value 

      Next j 
     Next i 


    Else 
     MsgBox "No Matching records found" 
    End If 
    End Sub 
+1

나는 "다음 J"후 "OraDynaSet.MoveNext"을 부여해야 .......... 대답을 얻었다 ...... .....이 변경 사항이 적용되면 제대로 작동합니다. – tester

답변

0
Dim SQL As String 
Dim OraDynaSet As Object 
Dim i As Integer 

SQL = "Select * from Employee where EmpID=20" 
Set OraDynaSet = objDataBase.DBCreateDynaset(SQL, 0&) 

If OraDynaSet.RecordCount > 0 Then 
'There were records retrieved 

    OraDynaSet.MoveFirst 


    For ICOLS = 0 To OraDynaSet.Fields.Count - 1 
     .Cells(1, ICOLS + 1).Value = OraDynaSet.Fields(ICOLS).Name 
    Next ICOLS 


    'Loop the recordset for returned rows 
    For i = 0 To OraDynaSet.RecordCount - 1 

     For j = 0 To ICOLS - 1 
     .Cells(2 + i, j + 1) = OraDynaSet.Fields(j).Value 

     Next j 
     OraDynaSet.Movenext 
    Next i 


Else 
    MsgBox "No Matching records found" 
End If 
End Sub 
관련 문제