![]() |
AW: Denkanstoß MemTable/Cachetable FireDac
Also grundsätzlich wird bisher immer ein SQL mit der entsprechenden Where-Bedingungn abgesetzt. Dies funktioniert auch schnell, aber der Mitarbeiter muss warten, also er startet das Prüfprogramm.
Und die ständige Abfrage dauert immer ca. 30 ms. Dies ist nicht die einzige Tabelle die Daten beinhaltet, die zur Prüfung notwendig sind. In der besagten Tabelle sind nur 10-50 Datensätze enthalten, diese in den Speichern zu nehmen und über den Filter einzugrenzen sehe ich als Peformanceverbesserung an. In einer weiteren Tabelle benfalls nur 10-20. |
AW: Denkanstoß MemTable/Cachetable FireDac
Also jetzt haben wir mal eine Mengenangabe.
Bei so kleinen Mengen ist ein Filter sinnvoll. Und wenn Du davon ein paar Tabellen hast, sehe ich keinen Grund, warum Du das nicht so machen solltest. |
AW: Denkanstoß MemTable/Cachetable FireDac
Perfekt, dickes Danke schön!
|
AW: Denkanstoß MemTable/Cachetable FireDac
Zitat:
Alternativ müsstest du dann eben dein SELECT so aufbauen, dass es pro Tag (oder Monat) einen Datensatz liefert, welcher sich per Locate oder Lookup anspringen liese. Selbst bei "Tagen" wären es in 100 Jahren aber auch nicht soooo viel Speicher, für die paar Datensätze. |
AW: Denkanstoß MemTable/Cachetable FireDac
Zitat:
Delphi-Quellcode:
DataSet.Locate('DatumVon;DatumBis', VarArrayOf([vDatumVon, vDatumBis]), []);
|
AW: Denkanstoß MemTable/Cachetable FireDac
Ja, mehrere Spalten prüfen, aber nicht mehrere Werte in einer Spalte, bzw. ein Wert zwischen zwei Spalten. :zwinker:
Delphi-Quellcode:
geht nicht.
// Datem zwischen Von und Bis
DataSet.Locate('Datum', VarArrayOf([DatumVon, DatumBis]), []); DataSet.Locate('DatumVon;DatumBis', Datum), []); Was aber beim Filter ginge
Delphi-Quellcode:
oder im Query.OnFilterRecord (Locate/Lookup mit einer Eventmethode wäre manchmal was Feines ... oder sowas wie im LINQ)
Query.Filter := Format('%0:d <= Datum and Datum <= %0:d', [2020, 2021]);
Query.Filter := Format('DatumVon <= %0:d and %0:d <= DatumBis', [2020]); Query.Filtered := True; if Query.RecordCount > 0 then |
AW: Denkanstoß MemTable/Cachetable FireDac
Jetzt muss ich doch nochmal Fragen, ich bekomme das mit den zwei Werten im Filter nicht hin.
Kennt jemand die genaue Syntax? |
AW: Denkanstoß MemTable/Cachetable FireDac
Zitat:
![]() |
AW: Denkanstoß MemTable/Cachetable FireDac
Danke für den Link. Hätte ich auch selber drauf kommen können. :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz