Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#6

Re: DevExpress speed Probleme bei >=5000 Datensätze

  Alt 28. Jun 2005, 02:31
Zitat:
Hat es einen Bestimmten Grund warum du lieber das
DSQ2.DataSet := nil
anstatt
Q02.Disablecontrols
verwendest.
Disablecontrols durchläuft alle, an die Datenquelle angebundenen Komponenten, deakiviert diese und unterdrückt das Neuzeichnen beim Datensatzwechsel.

DSQ2.DataSet := nil ist imho etwas schneller weil die Datasource komplett von der Datenquelle getrennt wird. Besonders wenn man viele datensensitive Controls verwendet.


Zitat:
Bin mir gerade am überlegen wie ich die Sortierung über SQL Lösen könnte ( ORDER BY Feld ASC oder DESC )
Das geht auch recht leicht.
baue den SQL Code der Query Q02 doch einfach Dynamisch zusammen. Am Besten auf einer Function.

vereinfachtes Beispiel:

Delphi-Quellcode:
function TForm1.LoadData(SortParam:TSortParam; SortedFieldName, WHERE :String):Boolean;
  var SQL,SortFlag:String;
begin
  // SortParam z.B. als SET (sfUnsorted, sfAscending, sfDescending)

  result :=false;
  
  SortFlag :='';
  SQL:='';
    
  if (SortParam = sfAscending) AND (SortedFieldname<>'') then
    SortFlag:='ORDER BY '+SortedFieldName;

  if (SortParam = sfDescending) AND (SortedFieldname<>'') then
    SortFlag:='ORDER BY '+SortedFieldName+' DESC';

  SQL := 'SELECT * FROM TABLE1 '+WHERE+' '+SortParam;
  
  Query.close;
  Query.sql.clear;
  Query.sql.text:=SQL;
  
  try
    Query.open;
    Result:=Query.active;
  except
    on e:Exception do
    begin
      Showmessage(e.message);
      result:=false;
    end;
  end;

end;
Jetzt kannst du z.B. im onHeaderClick, über Comboboxen o.Ä. die Sortierung per SQL ändern.
z.B.
Delphi-Quellcode:
if LoadData(sfDescending,'ID', 'WHERE Name = ''Müller'' ') then
   ShowMessage('Fertig') else
   ShowMessage('Das hat leider nicht geklappt.');
  Mit Zitat antworten Zitat