Discussion:
RecordSet in ein Array schreiben ohne rs.movenext?
(zu alt für eine Antwort)
Reiner Wahnsiedler
2004-04-02 04:05:38 UTC
Permalink
Hallo,

ich möchte ein recordset in ein array schreiben:

while not rs.eof
x(i) = rs!Text1
i = i+1
rs.movenext
wend

Funktioniert, aber dauert ewig.

Gibt es eine Möglichkeit, das in einem Rutsch zu erledigen?
Irgendwie so:

x()="Select Text1 From Tabelle1"

Hintergrund ist, dass ich die Daten nach Excel schreiben will. Also Excel
FrontEnd, Access BackEnd - innerhalb Excel Access anzapfen und die Daten in
einem Rutsch nach Excel schreiben.

Vielen Dank im voraus,

Reiner
Gunter Avenius
2004-04-02 05:32:49 UTC
Permalink
Hallo Reiner,
Post by Reiner Wahnsiedler
while not rs.eof
x(i) = rs!Text1
i = i+1
rs.movenext
wend
Funktioniert, aber dauert ewig.
Gibt es eine Möglichkeit, das in einem Rutsch zu erledigen?
x()="Select Text1 From Tabelle1"
IMO Nein.


--
Gruß
Gunter
_________________________________________________
Access - FAQ: http://www.donkarl.com
home: http://www.avenius.com
Karl Donaubauer
2004-04-02 06:04:14 UTC
Permalink
Post by Reiner Wahnsiedler
while not rs.eof
x(i) = rs!Text1
i = i+1
rs.movenext
wend
Funktioniert, aber dauert ewig.
Gibt es eine Möglichkeit, das in einem Rutsch zu erledigen?
x()="Select Text1 From Tabelle1"
Hintergrund ist, dass ich die Daten nach Excel schreiben will. Also
Excel FrontEnd, Access BackEnd - innerhalb Excel Access anzapfen und
die Daten in einem Rutsch nach Excel schreiben.
Wozu das Array?
s. Excel-VBA <F1> CopyFromRecordset-Methode
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Datenbankprofis: http://www.dbdev.org
Reiner Wolff
2004-04-02 06:46:05 UTC
Permalink
Moin Reiner,
Post by Reiner Wahnsiedler
while not rs.eof
x(i) = rs!Text1
i = i+1
rs.movenext
wend
Funktioniert, aber dauert ewig.
Gibt es eine Möglichkeit, das in einem Rutsch zu erledigen?
x()="Select Text1 From Tabelle1"
Eine solche Möglichkeit gibt es wohl nicht. An der Geschwindigkeit kann man
aber vielleicht trotzdem etwas ändern. Welche Zeile ist denn so langsam?
Wenn es am Befüllen des Arrays liegen sollte, so könnte man einen "Umweg"
einprogrammieren und das Array mit der Split-Funktion füllen (die ist
unheimlich schnell, was sowas angeht). Dazu müßte man nur die Daten für die
Split-Funktion ersteinmal aufbereiten.
Liegt es am rs.movenext, so könnte es sein, dass man beim Öffnen des
Recordsets das noch etwas verbessern kann. Frei nach dem Motto: Wenn er
derzeit bei jedem MoveNext überprüft, ob seine Daten in der Datenbank noch
genauso aussehen, sollte man diesbezüglich doch eher auf ein unflexibleres
Recordset umsteigen, etc.
Post by Reiner Wahnsiedler
Hintergrund ist, dass ich die Daten nach Excel schreiben will. Also Excel
FrontEnd, Access BackEnd - innerhalb Excel Access anzapfen und die Daten in
einem Rutsch nach Excel schreiben.
Neben dem von Karl schon erwähntem CopyFromRecordset, könntest Du das
Problem auch lösen, indem Du von Excel aus über Menü Daten - Externe Daten,
eine neue Abfrage erstellst und Dir über den Weg die Daten nach Excel
holst. Dabei ist dann die Aktualisierung etwas dynamischer.

HTH
Greetinx aus Kiel
Reiner
--
COMPUTER ARBEITEN BINAER: ENTWEDER SIE FUNKTIONIEREN ODER SIE SIND KAPUTT.
Michel Fouquet
2004-04-04 09:41:48 UTC
Permalink
Hallo Reiner,
Post by Reiner Wahnsiedler
while not rs.eof
x(i) = rs!Text1
i = i+1
rs.movenext
wend
Funktioniert, aber dauert ewig.
Gibt es eine Möglichkeit, das in einem Rutsch zu erledigen?
einmal abgesehen von dem Verwendungszweck (Wegschreiben der Daten nach
Excel) empfiehlt die IAF (Internationale der Array-Freunde i.Gr.), in
der OH/dem Objektkatalog nach dem Stichwort "GetRows" zu forschen. Dort
findet sich auch ein entsprechendes Beispiel.

Diese Methode des Recordset-Objekts steht sowohl in DAO als auch ADODB
zur Verfügung, in letzterem allerdings mit zusätzlichen, optionalen
Parametern.

mfg,
Michel

Loading...