Hallo,
ich habe eine Abfrage per ADO auf eine Oracledatenbank erstellt.
Jetzt habe ich als Ergebnis einen Recordset.
Ich würde nun gerne das Ergebnis der Abfrage als Accesstabelle speichern.
Wie mache ich das?
Bin purer Anfäger in VBA.
Viele Grüße und Danke für alle Lösungshilfen...
slider
Hallo,
da gibts verschieden Möglichkeiten... ;)
So KÖNNTEST du dein Recordset nun Zeile für Zeile durchlaufen und per INSERT - Statement die Werte daraus in eine Tabelle verfrachten.
Hier wird praktisch in jeder Zeile der SQL-String mit den Werten neu erzeugt und dann gegen deine Datenbank gesendet.
Du KÖNNTEST auch ein 2. Recordset, welches praktisch als leeres Recordset von der Zieltabelle erzeugt wird, dazu nutzen die Werte aus dem Quell-Recordset zu übernehmen.
Diese Methode ist eher ein wendig unübersichtlich und sicher nicht für den Neuling geeignet (meine persönliche Meinung)
Und schließlich KÖNNTEST du deinen Datenzugriff mittels eines Command-Objects erledigen und diesem eine Tabellenerstellungasabfrage mitgeben.
Ob und wie nun die Problemstellung zu lösen ist bzw. welche Methode zu verwenden Sinn macht kann ich so nicht beantworten, da mir Kenntnisse über den Umfang des Recordsets fehlen.
Von wievielen Feldern (Spalten) und Datensätzen sprechen wir denn wenn wir darüber reden?
Grüße
Peter
Hallo,
also zum Umfang kann ich sagen das es sich ca. um 20 Spalten und 200.000 Zeilen handelt.
Verstehe deinen Lösungsansatz nur kenne ich die VBA Syntax nicht so gut, da ich bislang nur mit Java, C++ programmiert habe.
Hast du vielleicht ein Codebeispiel?
Viele Grüße und Danke im vorraus.
slider
Tach,
wenn Du eine ADO-Abfrage von Oracle im Access gemacht hast und ein Recordset öffnen konntest, bist Du weiter als die meisten Access-Bastler je kommen, das mit dem Anfänger nehme ich Dir nicht ab. Du findest massig Anleitungen im www. Ein abstraktes Codebeispiel wird Dir deshalb keiner hinschreiben.
Beispiel etwa:http://www.office-loesung.de/ftopic59453_0_0_asc.php (http://www.office-loesung.de/ftopic59453_0_0_asc.php)
Ich machs trotzdem:
Wenn du SQL gut kannst, dann nimm die erste Alternative.
Dim sqlString as String
<recordset>.movefirst
Do until <recordset>.eof
sqlString = "INSERT INTO Tabelle (Feld1, Feld2, Feld2) "
sqlString = sqlString & "VALUES (" & rs!Feld1 & ", " & rs!Feld2 & ", " & Feld3)"
/* Anführungsstriche bei strings natürlich nicht vergessen
Dezimaltrenner ist im SQL Punkt, da mußt Du evtl. Replace machen
Dim strDouble as string
strDouble = rs!Feld4
Replace(strDouble. ",", ".")
Bei Datumswerten gibt es außerdem, noch ein spezielles Format */
CurrentDb.execute(sqlString) // Mehr ist nicht nötig für ein Insert, wenn du keine Transaktionen etc. pp. brauchst
<recordset>.movenext
loop
Wenn Du mal schreibst, was Du schon als Code gemacht hast, dann kann man ja über Details reden.
Grüße
Johannes