Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10 Min) (https://www.delphipraxis.net/68072-arbeitszeit-eines-mitarbeiter-ausrechen-100-stunden-10-min.html)

Karstadt 24. Apr 2006 12:13

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;

mkinzler 24. Apr 2006 12:24

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Was willst du geanu ausrechnen, die Summe?

Angel4585 24. Apr 2006 12:27

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)

Karstadt 24. Apr 2006 13:03

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Typ ist TTIME

08:10:36

mkinzler 24. Apr 2006 13:06

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Nochmal meine Frage, was willst du berechnen Summe? Poste mal die Metadaten( Tabellenbeschhreibung)

Martin W 24. Apr 2006 13:11

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
SQL-Code:
INSERT INTO Leute (Name) VALUES ('08:11:22')
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.

Gruß
Martin W

Martin W 24. Apr 2006 13:17

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Ah, sry, hab die Frage falsch gelesen... Was willst du denn damit machen?

Karstadt 24. Apr 2006 13:22

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.

mkinzler 24. Apr 2006 13:26

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
SQL-Code:
select MA_name, sum(MA_arbeiztszeit) as summe from Tabelle group by MA_name;

Karstadt 24. Apr 2006 14:00

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
nun habe ich aber als Result 90800 was ist das jetz für eine Zahl?

Die Muhkuh 24. Apr 2006 14:04

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Die Summe von der Spalte MA_arbeiztszeit

Angel4585 24. Apr 2006 14:06

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.

mkinzler 24. Apr 2006 14:10

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
In Minuten:
SQL-Code:
select MA_name, sum(MA_arbeiztszeit) / 60 as summe from Tabelle group by MA_name;
In Stunden:
SQL-Code:
select MA_name, sum(MA_arbeiztszeit) / 3600 as summe from Tabelle group by MA_name;

Karstadt 24. Apr 2006 14:21

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

mkinzler 24. Apr 2006 14:22

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Dann sind dass keine Time-Felder in der Datenbank. Wie ist die Tabelle definiert ( Metdaten!).

Karstadt 24. Apr 2006 14:24

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

mkinzler 24. Apr 2006 14:28

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Irgendwas passt da nicht, ich sehe hier keine Time-Feld. Meinst du das Feld pma_arbeitstag?

Karstadt 24. Apr 2006 14:30

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Delphi-Quellcode:
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
oh, sorry. :( jetzt aber

Karstadt 24. Apr 2006 14:35

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

mkinzler 24. Apr 2006 14:39

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.

Karstadt 24. Apr 2006 14:43

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
wie genauf funtioniert das?

ein cast auf TIME.

mkinzler 24. Apr 2006 16:28

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;

mkinzler 24. Apr 2006 16:40

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;

mquadrat 24. Apr 2006 16:42

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?

mkinzler 24. Apr 2006 16:45

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Zitat:

Addieren kann man sie wohl schon. Was genau da rauskommt, könnt ich jetzt nur bei Firebird sagen, da liegt das Buch neben mir Wink
Ein Fehler:
Zitat:

Zitat von Firebird Server
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
data type not supported for arithmetic.


Karstadt 25. Apr 2006 07:18

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:
With Tabelle do
begin
  First;
  While not EOF do
  begin
    //Lese die gesamtzeit aus und addiere
    next;
  end;
end;
Am ende habe ich das raus was ich haben wollte. Aber nun habe ich 1000 DS... oh :(

mkinzler 25. Apr 2006 07:27

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.

Angel4585 25. Apr 2006 07:38

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.

Karstadt 25. Apr 2006 07:42

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? :?:

Angel4585 25. Apr 2006 08:13

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)

Karstadt 25. Apr 2006 08:16

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Benutzt du auch die MySql ? ich verwende die version 4.1 und du?

Angel4585 25. Apr 2006 08:19

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

Karstadt 25. Apr 2006 11:34

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
SQL-Code:
select Minute(pma_ar_gesamt) from projekte_ma
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?

mkinzler 25. Apr 2006 11:37

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 ?

Angel4585 25. Apr 2006 11:41

Re: Arbeitszeit eines Mitarbeiter ausrechen (100 Stunden 10
 
Zitat:

Zitat von mkinzler
Das Feld ist schon vom Typ TIME. Dies sind Uhrzeiten. Diese kann man nicht addieren. Oder was gibt 8 Uhr + 9 Uhr ?

8+9=17 :stupid:

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?

mkinzler 25. Apr 2006 11:48

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?

Angel4585 25. Apr 2006 11:53

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.

mkinzler 25. Apr 2006 11:56

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

Angel4585 25. Apr 2006 12:35

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 15:17 Uhr.

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