AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Geschwindigkeit beim auslesen verbessern

Geschwindigkeit beim auslesen verbessern

Ein Thema von Grumble · begonnen am 9. Feb 2005 · letzter Beitrag vom 9. Feb 2005
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Geschwindigkeit beim auslesen verbessern

  Alt 9. Feb 2005, 13:11
Eventuell würde es auch einiges bringen für jede Zeile und Spalte des SG vor dem füllen ein BeginUpDate zu machen und nach dem Füllen ein EndUpdate:

Delphi-Quellcode:
procedure SGBeginUpdate (sg : TStringGrid);
var
  ndx : Integer;
begin
  for ndx := 0 to sg.RowCount-1 do
  begin
    sg.Rows[ndx].BeginUpdate;
  end;
  for ndx := 0 to sg.ColCount -1 do
  begin
    sg.Cols[ndx].BeginUpdate;
  end;
end;

procedure SGEndUpdate (sg : TStringGrid);
var
  ndx : Integer;
begin
  for ndx := 0 to sg.RowCount-1 do
  begin
    sg.Rows[ndx].EndUpdate;
  end;
  for ndx := 0 to sg.ColCount -1 do
  begin
    sg.Cols[ndx].EndUpdate;
  end;
end;


.
.
    grd_asset.Rows:= DM.ZQ.RecordCounte + 1; // Zeilenanzahl
    while not DM.ZQ.Eof do
    begin
        c:=c+1;

        s:= DM.ZQ.Fieldbyname('DATA').asString;
        templist.DelimitedText:=s;
        if c = 1 then
        begin
          grd_asset.Cols:=templist.Count; // Spaltenanzahl
          SGBeginUpDate (grd_asset); // BeginUpdate für das SG
        end;
        for i:=1 to templist.Count do
          grd_asset.Cell[i,c]:=templist.Strings[i-1];
// end;
    DM.ZQ.Next;
    end;
    SGEndUpDate (grd_asset); // EndUpdate für das SG
.
.
Vorher müssen natürlich die Spalten und Zeilenanzahlen bekannt sein.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: Geschwindigkeit beim auslesen verbessern

  Alt 9. Feb 2005, 13:14
verzeih meine unwissenheit, aber wozu diese update?

btw: recordcount war ne gute idee, bin mit der performance jetzt zufrieden
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Geschwindigkeit beim auslesen verbessern

  Alt 9. Feb 2005, 13:20
Zitat von Grumble:
verzeih meine unwissenheit, aber wozu diese update?...
Was gibt es da zu verzeihen?

Wenn Du eine visuele Komponente (StringGrit, ListBox, ListView usw) mit Daten füllst wird sie bei jedem neuen Eintrag auch neu gezeichnet. Durch das BeginUpdate wird dieses verhindert. Das bedeutet während dem füllen wird das Grid nicht neu gezeichnet. Erst nach dem EndUpdate wird dieses gemacht. Dies kann auch einige Sekunden einsparen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#14

Re: Geschwindigkeit beim auslesen verbessern

  Alt 9. Feb 2005, 13:21
Kleine Optimierungen:
Delphi-Quellcode:
  c:=0;
  dataexist:=false;
// DM.ZQ.SQL.Clear; <== ist überflüssig wenn Zuweisung auf SQL.Text folgt
  DM.ZQ.SQL.Text := 'SELECT * FROM ASSET_DATA WHERE ASSET_id = ' + IntToStr (caid);
  DM.ZQ.Open;
// DM.ZQ.First; <== ist überflüssig, da nach Open die Datenmenge immer auf dem 1. Record steht
  if DM.ZQ.IsEmpty then // <== Prüfung mit IsEmpty ist am "saubersten"
     Exit; // keine Daten gefunden
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz