Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#2

AW: Filter geht nicht

  Alt 29. Sep 2019, 08:09
Moin...
Dein Problem hat mehrere Ursachen.

1. Kein Mensch mehr benutzt TTable (oder die Equivalente). Bei einer Tabelle werden immer ALLE Daten geladen. Das mag am Anfang funktionieren, je mehr Daten du hast, wird es immer langsamer.
2. Benutze immer eine Query. Da holst du nur die Daten die du auch benötigst.
3. Bei einer Query benutze immer Parameter!
4. Tu dir selbst einen Gefallen, und benutze sprechende Namen für Variablen, Komponenten und Felder in englisch. Wenn du mal in einem Team arbeiten solltest, mußt du dich nicht umgewöhnen.
Delphi-Quellcode:
// Saldo bestimmen
FDQuery.SQL.Text := 'select Price from PriceTable where PriceDate between :DAF and :DAT';
FDQuery.ParamByName('DAF').AsDateTime := DateFrom; // direkt als Date ohne Konvertierung
FDQuery.ParamByName('DAT').AsDateTime := DateTo; // Ich hoffe nur, daß dein Feld in der Datenbank auch DateTime ist.
FDQuery.Open;

while not FDQuery.Eof do
begin
  Saldo := Saldo + FDQuery.FieldByName('Price').AsFloat;
  FDQuery.Next;
end;
PS: Da ich ohne Filter arbeite, kann ich nur raten. Das Problem liegt mit Sicherheit an der "Konvertierung" der DateTime Daten im Filterstring. Mit Parametern hast du das nicht.

Geändert von haentschman (29. Sep 2019 um 08:18 Uhr)
  Mit Zitat antworten Zitat