2013-01-01 142 views
1

我已經編寫了以下代碼,以從Oracle DB中獲取表中的數據,並使用VBA宏將數據轉儲到Excel表。
它從DB中的表中檢索數據並將其轉儲到Excel表中。在Excel中,它重複顯示第一行。對於一個實例,如果在DB中返回了45個不同的行,在Excel表中,返回了45行,但是在Excel中的所有45行都與第一行是DB相同。如何從數據庫中獲取精確的行到excel?使用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

得到的答案..........我應該給 「OraDynaSet.MoveNext」 「下一步J」 之後...... .....當這種變化發生時,它可以正常工作。 – 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