Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Uhrzeiten (Differenz) ermitteln (https://www.delphipraxis.net/3400-uhrzeiten-differenz-ermitteln.html)

Mitchl55 10. Mär 2003 17:21


Uhrzeiten (Differenz) ermitteln
 
Hallo

Ich habe 3 DBedit-Felder in dem DBeditFeld1 gebe ich eine Startuhrzeit ein und in dem DBeditFeld2 die Enduhrzeit. Jetzt möchte ich per Druck auf Button1 den Abstand oder besser die Differenz zwischen den beiden Uhrzeit im DBeditFeld3 auf dem Bildschirm anzeigen und eintragen! Für eine Datumsangabe habe ich das hinbekommen aber weis jemand wie das für die Uhrzeiten geht?

(Die DBFelder sind in einer Paradox-Datenbank vom Typ-T)

Gruß

Mitchl

:coder:

eddy 10. Mär 2003 18:15

Hallo Mitchl,

konnte kein Problem finden:

Code:
procedure TForm.SpeedButton1Click(Sender: TObject);
begin
  // Datei öffnen
  UP_DBActiv(Tab2, SessN, 'c:\tmp\', 'Timetest.DB');
  Tab2.First;
  while not Tab2.Eof do begin
    Tab2.Edit;
    Tab2.FieldByname('T3').AsDateTime :=
                        Tab2.FieldByname('T2').AsDateTime
                        - Tab2.FieldByname('T1').AsDateTime;
    Tab2.Next;
  end;
end;
mfg
eddy

Mirilin 10. Mär 2003 18:35

Delphi-Quellcode:
TDateTime = type Double;
kann man nun einfach so rechnen wie mit normalen Zahlen, oder?

Mitchl55 11. Mär 2003 15:33

Hallo

die Uhrzeit wird nicht richtig berechnet wenn es z.B. von 20:00 bis 04:00 Uhr geht! Hat jemand eine Lösung für dieses Problem?

Gruß

Mitchl

eddy 11. Mär 2003 16:17

Hallo Mitchl,

ich will ja nicht lästern, aber ein bischen Nachdenken hilft manchmal weiter :mrgreen: Beim schnellen Test mit 08:30 bis 04:20 ist mir der Fehler schon aufgefallen, aber das auszuwerten sollte wohl kein Problem sein. Sollte sich das zur Zeit gehörende Datum auch noch um mehr als einen Tag unterscheiden, kann man das natürlich auch noch austesten und auswerten.

Code:
procedure TFInfoFinder.SpeedButton1Click(Sender: TObject);
var
  dt, dt1, dt2 : TDateTime;
begin
  UP_DBActiv(Tab2, SessN, 'c:\kasse\tmp\', 'Timetest.DB');
  Tab2.First;
  while not Tab2.Eof do begin
    dt1 := Tab2.FieldByname('T1').AsDateTime;
    dt2 := Tab2.FieldByname('T2').AsDateTime;

    if dt2 < dt1 then begin
      dt := 24 - dt1 + dt2;
    end
    else
      dt := dt2 - dt1;

    Tab2.Edit;
    Tab2.FieldByname('T3').AsDateTime := dt;
    Tab2.Next;
  end;
end;
mfg
eddy

Mitchl55 11. Mär 2003 20:43

Hey Eddy...

Deine Lösung ist mir auch eingefallen! Dachte aber daran, ob es bei Delphi irgendeine Funtion gibt, die das ganze nochmehr abkürzen können! Aber Trotzdem danke für die Lösung!

Gruß

Mitchl
:coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 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 by Thomas Breitkreuz