Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CRDBGrid Spalte mit einem Edit vergeleichen (https://www.delphipraxis.net/177731-crdbgrid-spalte-mit-einem-edit-vergeleichen.html)

Sir Rufo 25. Nov 2013 09:15

AW: CRDBGrid Spalte mit einem Edit vergeleichen
 
Hier würde es sich anbieten den Zeitraum zwischen der letzten Abfrage und Jetzt zu untersuchen.

Delphi-Quellcode:
type
  TForm1 = class( TForm )
    ...
  private
    FLastCall : TDateTime;
    ...
  end;

procedure TForm1.CheckTimer;
var
  LNow : TDateTime;
begin
  // Abfragezeitpunkt merken
  LNow := Now;

  // Abfrage vorbereiten
  Qry.SQL.Text := 'SELECT * FROM TimerEvents WHERE AlarmTime > :CallThen AND AlarmTime <= :CallNow';
  Qry.ParamByName('CallThen').Value := FLastCall;
  Qry.ParamByName('CallNow').Value := LNow;

  Qry.Open;
  try
    // Jetzt alle Datensätze bearbeiten
    while not Qry.EOF do
    begin
      // Irgendwas mit machen
      Qry.Next;
    end;
  finally
    Qry.Close;
  end;

  // Letzten Abfragezeitpunkt merken
  FLastCall := LNow;
end;
Abhängig davon, wie das Programm arbeiten soll, kann man sich den letzten Abfragezeitpunkt extern merken oder man setzt den Abfragezeitpunkt beim Anwendungsstart auf die aktuelle Uhrzeit (weil das Programm immer nur dann verantwortlich ist, wenn es läuft)

Perlsau 25. Nov 2013 11:18

AW: CRDBGrid Spalte mit einem Edit vergeleichen
 
Zitat:

Zitat von DeddyH (Beitrag 1237269)
Das wird mit sehr hoher Wahrscheinlichkeit aber nicht funktionieren, da der Vergleich in exakt der richtigen Millisekunde stattfinden müsste. Ich würde daher eher auf DateUtils.SecondsBetween o.ä. zurückgreifen.

Stimm! Es müßte heißen:
Delphi-Quellcode:
if AlarmZeit > Now then

DeddyH 25. Nov 2013 12:33

AW: CRDBGrid Spalte mit einem Edit vergeleichen
 
Damit bekommst Du aber alle künftigen, selbst wenn die erst nächstes Jahr fällig werden ;) Sollte Sir Rufos elegante Lösung aus welchen Gründen auch immer nicht in Frage kommen, würde ich wie erwähnt SecondsBetween verwenden, um eine Toleranzgrenze festzulegen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr.
Seite 2 von 2     12   

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