Hi, ich habe folgendes Problem.
Um einen Select von einer Datenbank auf ein Tabellenblatt zu bringen benutze ich den unten stehenden Code.
Das Problem ist das es ziemlich lange dauert bis die 2 Schleifen abgelaufen sind (2-3 sek. bei 1000 Zeilen) und das ganze dann in die Tabelle kopiert ist.
Gibts da evtl eine andere Loesung um das zu beschleunigen ?
Danke schonmal
Gruss
Heinz
Public Sub ExportData(xlsSheet As Worksheet, sqlQuery As String, oraConnection As String)
Dim Conn As New Connection
Set Conn = New ADODB.Connection
Conn.Open oraConnection
Dim rs, i, counter
Set rs = Conn.Execute(sqlQuery)
For i = 0 To rs.Fields.Count - 1
xlsSheet.Cells(1, i + 1).Value = rs.Fields.item(i).Name
Next
counter = 2
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
xlsSheet.Cells(counter, i + 1).Value = rs(i)
Next
counter = counter + 1
rs.MoveNext
Loop
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
End Sub
Um einen Select von einer Datenbank auf ein Tabellenblatt zu bringen benutze ich den unten stehenden Code.
Das Problem ist das es ziemlich lange dauert bis die 2 Schleifen abgelaufen sind (2-3 sek. bei 1000 Zeilen) und das ganze dann in die Tabelle kopiert ist.
Gibts da evtl eine andere Loesung um das zu beschleunigen ?
Danke schonmal
Gruss
Heinz
Public Sub ExportData(xlsSheet As Worksheet, sqlQuery As String, oraConnection As String)
Dim Conn As New Connection
Set Conn = New ADODB.Connection
Conn.Open oraConnection
Dim rs, i, counter
Set rs = Conn.Execute(sqlQuery)
For i = 0 To rs.Fields.Count - 1
xlsSheet.Cells(1, i + 1).Value = rs.Fields.item(i).Name
Next
counter = 2
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
xlsSheet.Cells(counter, i + 1).Value = rs(i)
Next
counter = counter + 1
rs.MoveNext
Loop
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
End Sub