Ich muss per
ADO Excel zugehen.
Ich benutze zzt folgendes, es geht, aber die Geschwindigkeit wird immer weniger als die Tabelle wächst.
Als ob ".Next" immer von vorne sucht ?
Die Ganze Tabelle muss in DbData[i,j] rein. DbData ist eine Array of Array of Widestring.
Delphi-Quellcode:
// for Excel and ODBC
// Number_Records = .RecordCount.
// Headers_Count = number of fields / columns
// DbImportDB is a different form which has connection components.
begin
for j := 1
to Number_Records - 1
do
begin
DBImportDB.DBTable.Next;
/// <<<<
for i := 0
to Headers.Count - 1
do
begin
main.LogFile('
Loading field ' + IntToStr(i), 4, TRUE);
if DBImportDB.DBTable.Fields.Fields[i]
{FindField(Headers[i])}.Text <> '
'
then
DBData[i, j] := DBImportDB.DBTable.Fields.Fields[i].Value
else
DBData[i, j] := DBImportDB.DBTable.Fields.Fields[i].Text;
end;
end;
end;
Für MS
ACCESS benutze ich
Delphi-Quellcode:
dbimportdb.DBTable.Recordset.MoveFirst;
....
Recordset.MoveFirst;
while not Recordset.eof do
....
recordset.MoveNext;
Das ist mehrfach schneller, ABER Excel liest nur data aus 1. Reihe. Allerdings sovielmal wie RecordCount.
Ist "MoveNext" nicht für Excel erlaubt / möglich ?
Und geht es die ganze .UsedRange auf einmal zu lesen, statt Reihe für Reihe ?