AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Denkanstoß MemTable/Cachetable FireDac
Thema durchsuchen
Ansicht
Themen-Optionen

Denkanstoß MemTable/Cachetable FireDac

Ein Thema von Eppos · begonnen am 1. Okt 2020 · letzter Beitrag vom 2. Okt 2020
Antwort Antwort
Seite 2 von 2     12   
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 10:04
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.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.433 Beiträge
 
Delphi 7 Professional
 
#12

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 10:09
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.
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 10:31
Perfekt, dickes Danke schön!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#14

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 14:25
Was aber vermutlich nicht geht, Locate mit ">= Datum_Von", "<= Datum_Bis"? Hat jemand eine Idee?
Nee, Locate geht nur auf einen Wert, aber man könnte da auch sowas wie LIKE benutzen (loPartialKey).

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.433 Beiträge
 
Delphi 7 Professional
 
#15

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 14:39
Nee, Locate geht nur auf einen Wert, aber man könnte da auch sowas wie LIKE benutzen (loPartialKey).
Stimmt nicht: Mehrere Werte geht durchaus: DataSet.Locate('DatumVon;DatumBis', VarArrayOf([vDatumVon, vDatumBis]), []);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#16

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 15:28
Ja, mehrere Spalten prüfen, aber nicht mehrere Werte in einer Spalte, bzw. ein Wert zwischen zwei Spalten.

Delphi-Quellcode:
// Datem zwischen Von und Bis

DataSet.Locate('Datum', VarArrayOf([DatumVon, DatumBis]), []);

DataSet.Locate('DatumVon;DatumBis', Datum), []);
geht nicht.

Was aber beim Filter ginge
Delphi-Quellcode:
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
oder im Query.OnFilterRecord (Locate/Lookup mit einer Eventmethode wäre manchmal was Feines ... oder sowas wie im LINQ)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Okt 2020 um 15:30 Uhr)
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 15:37
Jetzt muss ich doch nochmal Fragen, ich bekomme das mit den zwei Werten im Filter nicht hin.
Kennt jemand die genaue Syntax?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#18

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 15:45
Kennt jemand die genaue Syntax?
http://docwiki.embarcadero.com/Libra...DataSet.Filter
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Denkanstoß MemTable/Cachetable FireDac

  Alt 2. Okt 2020, 15:50
Danke für den Link. Hätte ich auch selber drauf kommen können.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:03 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