![]() |
Datenbank: Mysql • Version: 4 • Zugriff über: direct
Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10 Min)
Hallo. Wie geht das?
Ich habe einen Feld Zeit dort ist die Arbeitszeit eingetragen...
Delphi-Quellcode:
witht Tabelle do
begin Close; Sql.text := '??' Open; Close; end; |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Was willst du geanu ausrechnen, die Summe?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Was genau ist eingetragen?
Sowas wie "Anfang" "21.01.2004 08:02:32" "Ende" "21.01.2004 17:23:12" oder sowas wie: "08:21:40" (Arbeitszeit: 8 Stunden 21 Minuten 40 Sekunden) |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Typ ist TTIME
08:10:36 |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Nochmal meine Frage, was willst du berechnen Summe? Poste mal die Metadaten( Tabellenbeschhreibung)
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
SQL-Code:
Wenn ich mich nicht irre, sollte der Feldtyp "Time" sein. Wenn es aufzählend sein soll, dann lade den Wert in Delphi, zähle ihn in Delphi hoch und schreibe ihn dann wieder in die DB... In Delphi kann du das dann mit den Borland.Vcl.DateUtils Funktionen verarbeiten.
INSERT INTO Leute (Name) VALUES ('08:11:22')
Gruß Martin W |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ah, sry, hab die Frage falsch gelesen... Was willst du denn damit machen?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Tabelle
MA_name MA_arbeiztszeit name Karstadt 08:00:59 Karstadt 08:00:59 Karstadt 08:00:59 Karstadt 08:00:59 Karstadt 08:00:59 Gesamtzeit z.B: 40:04:23 Nach möglichkeit mit SQL abfrage. Jetzt gehe ich mit next vor kopieren die Daten aus Feld arbeiztszeit in eine Varialbe und rechne damit. Bei 10000 DS ist das schlecht. |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
SQL-Code:
select MA_name, sum(MA_arbeiztszeit) as summe from Tabelle group by MA_name;
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
nun habe ich aber als Result 90800 was ist das jetz für eine Zahl?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Die Summe von der Spalte MA_arbeiztszeit
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
was hattest denn alles bei dir drin stehen?
Ich denke mal es ist die Angabe der Gesamtzeit in Sekunden. |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
In Minuten:
SQL-Code:
In Stunden:
select MA_name, sum(MA_arbeiztszeit) / 60 as summe from Tabelle group by MA_name;
SQL-Code:
select MA_name, sum(MA_arbeiztszeit) / 3600 as summe from Tabelle group by MA_name;
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Bei mir macht der was anderes
02:00:00 00:03:00 01:00:00 01:39:00 01:39:00 Sume = 60800 Das wird als reine Zahlen addiert |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Dann sind dass keine Time-Felder in der Datenbank. Wie ist die Tabelle definiert ( Metdaten!).
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
SQL-Code:
CREATE TABLE `projekte_ma` (
`id_pma` int(10) unsigned NOT NULL auto_increment, `pma_arbeitstag` date default '0000-00-00', ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Irgendwas passt da nicht, ich sehe hier keine Time-Feld. Meinst du das Feld pma_arbeitstag?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Delphi-Quellcode:
oh, sorry. :( jetzt aber
CREATE TABLE `projekte_ma` (
`id_pma` int(10) unsigned NOT NULL auto_increment, `pma_ar_gesamt` time default NULL, PRIMARY KEY (`id_pma`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ich möchte wissen was ich falsch mache.
Kann das sein das das an der DB Komponente liegt ich verwende die MYDAC |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ich glaube eher an der Verbindunf/mysql-Komponente, man könnte noch versuchen, ein cast auf TIME zu machen.
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
wie genauf funtioniert das?
ein cast auf TIME. |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
SQL-Code:
select MA_name, sum(cast(MA_arbeiztszeit as TIME)) as summe from Tabelle group by MA_name;
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ich habe mir das ganze nochmal angesehen und habe entdeckt, daß hier ein Denkfehler vorliegt. Daten vom Typ TIME sind ja Uhrzeiten, diese kann mann nicht addieren. Ich würde die Datenbank so anpassen. das du Beginn(Zeit) und Ende(Zeit) in die Tabelle schreibst und dann über die Dauer summierst. Dann sollte es funktionieren.
SQL-Code:
CREATE TABLE `projekte_ma` (
`id_pma` int(10) unsigned NOT NULL auto_increment, `pma_ar_beginn` time default NULL, `pma_ar_ende` time default NULL, PRIMARY KEY (`id_pma`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1
SQL-Code:
select id_pma, sum( pma_ar_ende - pma_ar_beginn) / 3600 as summe from Tabelle group by id_pma;
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Addieren kann man sie wohl schon. Was genau da rauskommt, könnt ich jetzt nur bei Firebird sagen, da liegt das Buch neben mir ;)
Das Problem ist wohl eher, was passiert bei mehr als 24 Stunden? |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Zitat:
Zitat:
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Funktioniert das bei euch mit eueren SQL komponenten? Ich gehe jetz anders vor.. ist aber sehr langsam..
Delphi-Quellcode:
Am ende habe ich das raus was ich haben wollte. Aber nun habe ich 1000 DS... oh :(
With Tabelle do
begin First; While not EOF do begin //Lese die gesamtzeit aus und addiere next; end; end; |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ich würde wie schon erwähnt Beginn/Ende notieren oder halt die Zeit in Minuten in die Tabelle schreiben. Dann funktioniert das Sum() auf Jedenfall.
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
ich würde den Wert in Sekunden speichern und diese dann aufsummieren.
Daraus sollte sich relativ einfach die Gesamtdauer berechnen lassen oder nicht? 29000 wären dann 8h 20 Min. |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Danke. Die Idee ist gut, werde dem entsprechend realisieren. Eine von meinen Fragen wurde aber nicht beantowrtet:
Funktioniert das bei euch mit ihren DB Komponenten die Zeit zu summieren oder ist das nur bei MYDAC (Komponente die ich benutze) so? :?: |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Das mit dem summieren hat ja denke ich nichts mit den Komponenten, sondern vielmehr mit der Datenbankversion zu tun.
Also bei mir funktioniert es und ich benutze die ZEOS Komponenten.(ZEOS kann ich übrigens nur empfehlen) |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Benutzt du auch die MySql ? ich verwende die version 4.1 und du?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Mein Datenbankserver ist zwar 5.0, aber ZEOS unterstützt soweit ich weis nur 4.1, also verwende ich demnach denke ich nur 4.1
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
SQL-Code:
nun kann ich Minuten sehen. ist das möglich das duch diesen "test" ersichtlich ist das das Feld pma_ar_gesamt eine Feld von Typ Time ist?
select Minute(pma_ar_gesamt) from projekte_ma
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Das Feld ist schon vom Typ TIME. Dies sind Uhrzeiten. Diese kann man nicht addieren. Oder was gibt 8 Uhr + 9 Uhr ?
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Zitat:
Warum sollte das nicht gehen? Uhrzeiten sind doch auch einfache Typen (ich glaube Float) die dann von dem Programm eben z.B. als 05:12:34 interpretiert werden oder nicht? |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Er hat pro Tag eine Uhrzeit, eigentlich sollten hier die Stundenanzahl pro Tag stehen. Er möchte nun z.B. die Wochen oder Monatsstunden berechnen. Entweder er nimmt 2 Uhrzeiten (Beginn/Ende) zieht die voneinander ab und erhält die Sekunden, welche er summieren kann (über Woche/Monat/...).
8 + 9 war schlechtes Beispiel 22 Uhr + 23 Uhr = 45Uhr! Oder? |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
22:00 Uhr und 23:00 Uhr um genauzusein
d.h. 22 Stunden und 0 Minuten bzw. 23 Stunden und 0 Minuten macht zusammen 45Stunden und 0 Minuten Dieses "Uhr" hintendran ist nur ne typisch deutsche Bezeichnung aber kein Mengentyp oder sowas soweit ich weis. |
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ein Wert eines TIME.Felds 22:00:00 heißt nicht 22 Stunden 0 Minuten und 0 Sekunden sondern 22:Uhr und 0 Minuten und 0 Sekunden
|
Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
Ich dachte immer es heisst "HOUR" und das heisst soweit meine Englischkenntniss mich nich im Stich lassen doch übersetzt "Stunde" :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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-2025 by Thomas Breitkreuz