Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: CSV Export eines ADOQueries beschleunigen

  Alt 25. Nov 2009, 16:46
Wenn die Query mit datensensitiven Steuerelementen verbunden ist (TDBEdit, TDBGrid o.ä.) bringt das Einschließen in einen 'DisableControls/Enablecontrols' block sehr viel Performance, da die Daten bei jedem 'Next' nicht neu gezeichnet werden müssen.
Delphi-Quellcode:
MyQuery.DisableControls;
Try
  MyQuery.First;
  While not MyQuery.Eof do Begin
  ...
    MyQuery.Next;
  End;
Finally
  MyQuery.EnableControls;
End;
Eigentlich sollte man die aktuelle Position des Datensatzzeigers mitspeichern, damit die durch die Schleife vorgenommene Verschiebung Desselben rückgängig gemacht wird.
Delphi-Quellcode:
Var
  BookMark : TBookmark;

Begin
  MyQuery.DisableControls;
  BookMark := MyQuery.GetBookmark(); // Heißt das so?
  Try
    MyQuery.First;
    While not MyQuery.Eof do Begin
    ...
      MyQuery.Next;
    End;
  Finally
    MyQuery.GotoBookmark(Bookmark);
    MyQuery.FreeBookmark(Bookmark);
    MyQuery.EnableControls;
  End
End
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat