Hallo zusammen,
ich hab ein ganz banales Problem und bin kurz vor dem Nervenzusammenbruch.
In MS SQL Server Management Studio habe ich eine Tabelle, diesen Inhalt möchte ich per VBA komplett in Excel per CopyFromRecordset schreiben.
Connect zu Datenbank in VBA kein Problem, SQL Abfrage in VBA kein Probelm, der debug.print sql zeigt alle Daten an mit allen Spalten.
Der VBA Code sieht so aus:
Set db = GetConnection_DB
Range("A8:L10000").Select
Selection.ClearContents
SQL = "select * from DB.meineTabelle where Datenstand = (select MAX(datenstand) from DB.meineTabelle)"
rs.CursorLocation = adUseClient
Set rs = db.Execute(SQL)
ActiveSheet.Range("A8").CopyFromRecordset rs
In Excel müssten 13 Spalten kopiert werden, es werden aber nur 3 Spalten kopiert und der Rest bleibt leer... Ich habe jetzt alle varianten versucht und bekomm es einfach nicht hin.
Durchlaufe ich alles in einer Schleife funktioniert es ohne Probleme:
i = 8
Do Until rs.EOF
ActiveSheet.Cells(i, 1) = rs!Spalte1
ActiveSheet.Cells(i, 2) = rs!Spalte2
ActiveSheet.Cells(i, 3) = rs!Spalte3
ActiveSheet.Cells(i, 4) = rs!Spalte4
ActiveSheet.Cells(i, 5) = rs!Spalte5
ActiveSheet.Cells(i, 6) = rs!Spalte6
ActiveSheet.Cells(i, 7) = rs!Spalte7
ActiveSheet.Cells(i, 8) = rs!Spalte8
ActiveSheet.Cells(i, 9) = rs!Spalte9
ActiveSheet.Cells(i, 10) = rs!Spalte10
ActiveSheet.Cells(i, 11) = rs!Spalte11
ActiveSheet.Cells(i, 12) = rs!Spalte12
ActiveSheet.Cells(i, 13) = rs!Spalte13
i = i + 1
rs.MoveNext
Loop
Ich hoffe es gibt jemanden der eine Lösung weiss, sehr wahrscheinlich ist es eine kleinigkeit.
Die Variante CopyFromRecordset hab ich in einer MySQL Datenbank schon 1000 mal ohne Probelem verwendet und bin wie immer vorgegangen und jetzt das =).
|