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.');