Einzelnen Beitrag anzeigen

myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#1

Excel ADO - geshwindigkeit ?

  Alt 27. Sep 2017, 09:40
Datenbank: Excel XLSX • Version: 2010 • Zugriff über: ADO
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 ?
  Mit Zitat antworten Zitat