Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeiterfassung in DB, generelle Vorgehensweise? (https://www.delphipraxis.net/101319-zeiterfassung-db-generelle-vorgehensweise.html)

stahli 12. Okt 2007 10:06

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Ja, jeder Nutzer gibt seine Zeiten auch selbständig ein. Man kann auf jedem Rechner mehrere Nutzer freigeben (steht alles allerdings ganz simpel in einer Ini).
Ist ein Monat komplett eingegeben, kann der jeweilige Chef den Monat abhaken, dann kann nichts mehr manipuliert werden (jedenfalls nicht von meinen Leuten :-) ).

Ich muss Dich mal auf´s WE vertrösten und stelle das Geraffel dann hier rein. Das Programm läuft für die Nutzer gut, zu Quelltext und Wartung sage ich mal lieber nichts... :oops:

stahli

Salomon 12. Okt 2007 10:17

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Das klingt echt gut. Dann freu ich mich schon auf das Wochenende :)

Reinhard Kern 12. Okt 2007 12:12

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Hallo,

ein solches System, ob Bedienterminal oder PC, sollte beim Anmelden als erstes den Status des Users prüfen: arbeitet oder arbeitet nicht. Wer sich bereits als arbeitend angemeldet hat, kann sich nur abmelden und umgekehrt. Die Frage von Überschneidungen erübrigt sich damit, dafür braucht man eine Statusabfrage "arbeitet XY?". Die ist auch sowieso sehr praktisch für einen Anwesenheitsanzeige o.ä. Professionelle System haben oft ein Panel (ein reales, kein TPanel) mit Ausweisleser und LED-Anzeige für jeden User.

Gruss Reinhard

Salomon 12. Okt 2007 12:35

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Hi,
für meinen Fall können die Zeiträume vom User auch noch nachträglich eingeben werden. D.h. die User schreiben quasi auf wann Sie wie lange was gemacht haben. Darauf basierend soll dann der monatliche Report generiert werden.

Für eine Zeiterfassung die "realtime" arbeitet solltet man es so machen wie du schreibst. In meinem Fall könnte jedoch ein User probieren einen Zeitraum doppelt zu belegen.

guidok 12. Okt 2007 12:45

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Ich würde in der DB zwei Felder anlegen, nämlich "FROM" und "TO" und die beiden als DateTime. Darin ist das Datum und die Zeit gespeichert und meines Wissens kann man in Delphi damit ganz normal rechnen und auch der Tageswechsel wird berücksichtigt.

Also:

TO - FROM = Anwesenheitszeit

Warum noch ein extra Feld für das Datum?

stahli 12. Okt 2007 13:17

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Liste der Anhänge anzeigen (Anzahl: 3)
@guidok:
Weil Du dann ein Datum+Uhrzeit als Differenz erhältst.
12.10.07 12:30 Uhr - 12.10.07 12:00 Uhr ergibt dann sowas wie 01.01.1800 00:30 Uhr.
Wenn man das als "30 Minuten" interpretieren will muss man auch wieder herumrechnen.
Daher besser gleich alles in Minuten oder Sekunden speichern...


@Salomon:
So, ich mach´s gleich in der Mittagspause...

Das Programm am besten wenn vorhanden auf M:\Sk laufen lassen (sonst wird das Formular rot gefärbt, damit man sieht, dass man mit Kopiedaten arbeitet). M:\ ist unser Netzlaufwerk.
Der Ordner Sk-Lokal mit der Ini muss auf C:\ liegen.
Gemeinsame Netzzugriffe sind möglich, wenn die BDE entsprechend konfiguriert ist.
Rechtsklick unten rechts auf das Formular erlaubt ein paar Einstellungen.

Wie gesagt, das ganze ist für die Anwender recht bequem, aber die Wartung war nur durch mich geplant. Ich kann im Dienst auch nur mal nebenbei schnell was programmieren - entsprechend sieht das ganze aus :-(

Bei Fragen - jederzeit gern.


@Reinhard:
Ein Chip-System soll in der Stadtverwaltung auch mmaaaaallllll kommen. Früher mussten wir noch Stunden+Minuten in Dezimalzahlen umrechnen... (müssen wir - bzw. mein Programm - jetzt bei der Weitergabe an das Personalamt auch noch) da war mein Programm schon ein riesiger Fortschritt.
Bei den IT-Admins habe ich angefragt, ob ich einen DB-Server nutzen darf - is nich wegen fehlender Sicherheitszertifizierung. Sonst hätte ich das Projekt schon mal generalüberholt. Na ja, die Nutzer können ja aktuell nicht klagen...


stahli

Salomon 12. Okt 2007 14:03

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Ich habe das ganze eben mal runtergeladen. Werde wohl aber erst nächste Woche dazu kommen näher rein zu schauen. Ist ja schon etwas code ;) Danke dafür!

Wenn man das Datum als "Date/Time" Wert speichert, muss bei Zeitraumvergleichen auch immer das Datum mit angegeben werden. Finde ich recht unpraktisch. Daher werde ich die Zeiten wohl als Float speichern.

Ich wünsche allen ein schönes WE!

mkinzler 12. Okt 2007 14:15

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Ich würde den von der Datenbank angebotenen Typen für Zeit verwenden, da nur so eine richtige Sortierung möglich ist und die DBMS weitere Verarbeitungsfunktionen für diese Typen anbieteten.

stahli 12. Okt 2007 14:32

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
In einem aktuellen Firebird-Projekt nutze ich für Start- und Endezeiten TDateTime-Felder.
Alle Felder, die eine Dauer beinhalten (berechnete oder vorgegebene) sind Integer und beinhalten die Sekunden. Differenzen zwischen zwei TDateTime kann man ja leicht in Sekunden umrechnen.

Die Darstellung der Dauer erfolgt dann über eine Funktion (bei Wert 75: "noch 1:15 min").
Änderungen von Dauervorgaben sind leicht über TUpDown möglich.

alzaimar 12. Okt 2007 16:32

Re: Zeiterfassung in DB, generelle Vorgehensweise?
 
Zitat:

Zitat von stahli
@guidok:
Weil Du dann ein Datum+Uhrzeit als Differenz erhältst.
12.10.07 12:30 Uhr - 12.10.07 12:00 Uhr ergibt dann sowas wie 01.01.1800 00:30 Uhr.

Die Differenz zweier TDateTime-Werte ist aber kein Datum sondern ein Float-Wert, der die Anzahl der Tage (ink. Dezimalwerten) wiederspiegelt. Insofern ist die Differenz hier 1 + 30/1440, oder 1,020833. Und das ist doch genau das Ergebnis, das wir haben wollen.
Wenn Du das in Minuten umrechnest, musst Du nur mit 1440 multiplizieren und erhälst als Ergebnis 1470. Was willst Du mehr?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.
Seite 2 von 5     12 34     Letzte »    

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