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   
Benutzerbild von himitsu
himitsu

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

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#2

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
44.374 Beiträge
 
Delphi 12 Athens
 
#3

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)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 2. Okt 2020 um 15:30 Uhr)
  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 14:59 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