![]() |
Datenbank: SQL • Zugriff über: Query
Zeiten einer Datenbank addieren
Hallo!!!
Ich habe ein Problem. In meiner SQL Datenbank befindet sich eine Spalte mit gestoppten Zeiten. Die Felder in der Datenbank sind als "Time" angelegt. Außerhalb dieser Tabelle will ich nun die Zeiten addieren. Das funktioniert ganz gut, aber sobald 24 Stunden überschritten werden, fängt er wieder bei null an. Ich will aber das er dann alles in Stunden umrechnet (z.B 65:31:34). Kann mir irgendjemand weiterhelfen??? Bin zwar kein Anfänger mehr, aber wenn es geht, beschreibt es ziemlich genau und einfach.
Delphi-Quellcode:
Vielen Dank für Eure Mühe!!!
function TForm1.CalcSumm():boolean;
var Summe:TDateTime; Zaehler:Integer; Begin Query1.First; Summe := 0; Zaehler:=0; while not Query1.Eof do begin Summe := Summe + Query1.FieldValues['Zeit']; Query1.Next; Zaehler:= Zaehler+1 end; lbAnzahl.Caption:=IntToStr(Zaehler); Query1.First; lbSumme.Caption:=TimeToStr(Summe); // Hier die fertige Summe end; |
Re: Zeiten einer Datenbank addieren
Ganz herzliches Willkommen hier im besten Forum :-)
Zu deinem Problem: 1. Warum berechnest Du deine Summe in Delphi. Du durchläufst deine gesamte Datenmenge, nur um die Summer zu berechnen. Wenn Du 100000 hast, dauert das ne halbe Ewigkeit... Deshalb erst mal besser:
SQL-Code:
In query1.FieldValues['Gesamtzeit'] steht dann als TDateTime deine Summe.
select sum(Zeit) as GesamtZeit from DeineTabelle
2. Dein Problem ist aber im Grunde die Darstellung. Da musst Du dich schon selbst drum kümmern. Da Du ja kein Anfänger mehr bist, sollte Folgendes als Stütze helfen: Delphi speichert die Daten und Zeiten in einem Float, auch wenn Du TDateTime verwendest. Der Teil vor dem komma sind die Tage, die dahinter die Stunden... Hast du also bsp. 60 Stunden, so sind das im Grunde genau 2,5 Tage :-) Also:
Delphi-Quellcode:
In Delphi gibts bestimmt dafür auch eine fertige Funktion, aber ich denk so sollte das Prinzip leichter verständlich sein, was ein TDateTime überhaupt für Delphi darstellt.
function FormatTime (T : TDateTime) : string ;
var h, m, s, ms : word ; begin DecodeTime (T,h,m,s,ms) ; h := h + Trunc(T)*24 ; Result := Format ('%.3d:%.2d%.2d',[h,m,s]) ; end ; |
Re: Zeiten einer Datenbank addieren
Moin,
bei Datenbank hast du nur SQL geschrieben. Welche Datenbank den nun genau? MfG Thorsten |
Re: Zeiten einer Datenbank addieren
Super, Danke!!!! Es funktioniert.
PS: Datenbank ist Paradox7 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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