Zeiterfassung

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

samy88

Zeiterfassung

Beitrag von samy88 »

Wie könnte man eine Zeiterfassung realisieren? gibt es z.b. einen Timer der bei einem event startet und bei einem bestimmten event aufhört die stunden zu zählen?
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi Sammy,

du könntest z.B. in einer datenbank eintragen, wann mit der Funktion begonnen wird und wann sie beendet wird. Hier trägst du dann die Zeit mit Time() ein. Die kannst du ja dann auch ausrechnen.

Ich mache das ähnlich allerdings ohne Time(). In dem Moment wo auf den Button gedrückt/geklickt wird oder über Menufunktion, erfolgt der 1.
datensatz, wird beendet der 2.te Datensatz.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

genau, keinen Timer laufen lassen sondern nur die Anfangs und Endzeit merken. Falls es nicht über einen Tag geht (sonst braucht man ja sowieso noch das Datum) nehme ich dafür aber nicht time() sondern seconds() da mit Sekunden sehr gut gerechnet werden kann.
Gruß
Hubert
samy88

Beitrag von samy88 »

Ich bin gerade am überlegen ob man das so realisieren könnte in meinem Fall..

Ich habe ein Browse in dem Verschiedene Benutzer stehen. Es ist die Möglichkeit gegeben einen Neuen Benutzer hinzuzufügen. Jeder benutzer hat einen Status.

Status 1 : Arbeitet
Status 2: Zuhause

Jetzt soll die Zeit aufgezeichnet werden die der Benutzer gearbeitet hat.

Dann bräuchte ich ja für jeden Benutzer eine eigene Datenbank so wie du es machen würdest oder?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

doch nicht für jeden eine eigen DBF ... und wegen der Anzeige dann doch wohl besser left(time(),5) ...

ARB_ZEIT:

PersID c 10 oder N ? // je nach Personalnummer
datum datumswert
Zustand c 1 ( Arbeit, Urlaub, Krank, etc...)
ArbeitAb c 5
ArbeitBis c 5

das kann dann auch im Browser angezeigt werden.
Der Zustand dürfte doch Arbeit oder nicht arbeit sein oder ?

Code: Alles auswählen

function ZeitInMinuten(cTime)
    local nStd, nMin
    nStd := left(cTime,2)
    nMin := substr(cTime,4,2)
return nStd+nMin*60

Code: Alles auswählen

Arbeitszeit := ZeitInMinuten(ArbeitBis) - ZeitInMinuten(ArbeitAb)
wenn ArbeitBis leer ist kann man auch direkt time() verwenden.
Eine weitere Spalte könnte dann Arbeitszeit in Minuten speichern oder einfach eine Funktion benutzen, die die Zeiten live ausrechnet.

z.B.

Code: Alles auswählen

function MinutenZeitAnzeige(nMinuten)
     local nMin, nStd
     nStd := int(nMinuten/60)
     nMin := nMinuten-nStd*60
return StrZero(nStd,2,0)+":"+StrZero(nMin,2,0)
Wie auch immer, ich finde die Umrechnung einer Zeit nach Minuten bzw. Sekunden für weitere Berechnungen ist am einfachsten. Danach einfach das Ergebnis wieder in Std. Min. aufteilen oder anzeigen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Über Index (auf Benutzername+datum+ArbeitsAb) oder (datum+ArbeitsAb) kann man dann sortieren ob man zuerst die Person oder zuerst das Datum sehen will. Natürlich kann man dann auch per scope einzelne Benutzer alleine anzeigen lassen, obwohl alles in einer Datei ist.

Einzelne Dateien würde ich nur verwenden, wenn physikalisch getrennte Daten nötig sind (Mandantensoftware oder Datenschutz, Jahresdaten etc.) alles andere über scope und Index in eine DBF.
Gruß
Hubert
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

Uhren synchronisieren

Beitrag von P. Jossi »

ich habe etwas ähnliches mit time() programmiert
Die Anwendung läuft auf einem win 98 Rechner.
Der Kunde bemerkte nun, dass die Zeit hin und wieder um bis 5 Min falsch ist
sich aber nach einem Neustart von Windows wieder korrekt einstellt. Die Batterie ist also ok.
Wie kann ich ein synchronisieren der Windowszeit mit dem Uhrenbaustein erzwingen?
viele Grüsse aus der nassen Schweiz Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Peter.

Vermutlich synchronisiert sich der Rechner beim Neustart mit dem Server oder sogar - immer empfehlenswert - mit einem Atomuhr-Webserver. Zwischendrin aber hängt die Uhr durch, weil die CMOS-Batterie schlappmacht. Das müßte dann aber ein wirklich alter Rechner sein.
Herzlich,
Tom
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

Die batterie ist ok

Beitrag von P. Jossi »

Hallo Tom ich danke Dir für die Antwort
Der Rechner ist an keinem Netzwerk angeschlossen
Die Batterie ist in Ordnung sonst würde ja ein Neustart oder Reset nicht helfen
Der Rechner steht in einem typischen Schweizer Luftschutzkeller darum schwierig eine Atomuhr zu installieren
ich suche deshalb eine Möglichkeit die Uhr direkt auszulesen oder eben windows zu synchronisieren
oder ich lasse den rechner jede nachts einmal runter fahren
Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Peter.

Ich würde trotzdem vermuten, daß die Bakterie im Eimer ist.
Herzlich,
Tom
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

5 Batterien in einem Monat

Beitrag von P. Jossi »

hallo Tom
ich kann Dir versichern dass es definitiv nicht die Batterie ist.
ich hatte das gleiche vermutet und der Geschäftsführer hat dann so alle Wochen wenn wieder eine Differenz auftrat mal die Batterie gewechselt
Während den Betriebsferien habe ich den Rechner dann bei mir gehabt
(mit neuer Batterie) und daneben eine Funkuhr zum Zeit Vergleich.
2 Wochen war alles perfekt, am Samstag nach 2 Wochen sah ich etwa schlagartig 5 min Differenz.
Da der Kunde damit leben kann haben wir weder Rechner noch das Betriebssystem getauscht.
vielen Dank Peter
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi Jossy

wenn du Zugriff auf ein Modem hast, kannst du eines meiner Modemprogramme auf meiner Homepage benutzen. Diese alten Programme rufen die NR. des Frankfurter Zeitservers an - soweit ich mich erinnere. Quellcode liegt bei oder kann ich liefern.

Oder wenn Internet Zugang möglich ist, gibt es Programme die die Zeit mit Internetservern abgleichen (Win2000 ff. hat so eines sogar on Board)

Oder du hast zugriff auf einen internen Server, dann nutze den NET TIME Befehl. Irgendwo habe ich die Syntax noch rumliegen, wobei ich denke dass das beim Einschalten automatisch über das Loginscript auch gemacht wird, dann bräuchte man nur dort nachsehen.
Gruß
Hubert
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

er ist und bleibt ein Solitair

Beitrag von P. Jossi »

ich danke allen für die lieben Ratschläge

Dieser Rechner ist einfach ein absoluter Einzelgänger.
Kein Modem kein Internet etc.
ich brauche wirklich nur einen Weg die Interne Uhr auszulesen
liebe Grüsse Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Uhren synchronisieren

Beitrag von AUGE_OHR »

hi,
P. Jossi hat geschrieben: Die Anwendung läuft auf einem win 98 Rechner.
Der Kunde bemerkte nun, dass die Zeit hin und wieder um bis 5 Min falsch ist
14 Tage sagst du ? ... da war doch was mit einem BUG in w98 ...
... ich finde es z.Z. nicht, aber ich bin mir fast sicher das kein Win98
PC über 14 Tage läuft ... da passiert vorher was nach Ablauf einer
bestimmten Zeit (ich glaube das waren 14 Tage)

Du sollstest also den PC regelmässig neu booten, ABER nicht zwischen
23:59 and 00:00 ... dann könnte es sein das dein Datum 2 Tage vor-
springt oder zurück !

erledigen kannst du das mit Tasktimer mit

Code: Alles auswählen

C:\WINDOWS\RUNDLL32.EXE Shell32,SHExitWindowsEx 2
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

wenn der Rechner aktuell genug ist, dass er einen Softwareneustart mitmacht könnte ich dir eine kleine PowerBasic EXE senden, die den Rechner zeitgesteurt neustartet.

Sowas ähnliches nutze ich um meinen Videorecorder PC abzuschalten.
Im Powerbasic Forum habe ich auch mal angefragt ob dein Problem lösbar ist, mal sehen. Andererseits ist es immer sinnvoll einen Windows Rechner regelmäßig neu zu starten :D
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

mit meinem PowerBasic DOS Compiler (Windows selbst verbietet Windowsprogrammen den direkten Zugriff aufs BIOS) habe ich eine kleine EXE (die Abfrage der BIOS-Uhr habe ich mir im PowerBasic Forum sagen lassen ;-) ) erstellt, die die BIOS Zeit und die von PowerBasic anzeigt:

etwa so

Code: Alles auswählen

do while inkey(.1)=0
    @ 1,1 say time()
enddo
Wenn du möchtest, sende mir deine eMail-Adresse und ich sende dir die EXE.
Wenn beide syncron laufen, kann man damit nichts gewinnen, wenn die Uhren auseinander laufen könnte man die DOS Zeit wieder nach der BIOS Zeit stellen.
Gruß
Hubert
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

das ist der Clou

Beitrag von P. Jossi »

Hallo Hubert i
ch denke das ist genau was ich suche
coradi-service@thurweb.ch
vielen Dank
Peter
Daniel

Re: Zeiterfassung (Arbeitszeit erfassen)

Beitrag von Daniel »

Hallo liebe Kollegen

Ich suche eine Zeiterfassung, die ich für meine Bedürfnisse anpassen könnte.
D.h. am Besten in XBase.
Ich stelle mir vor:
- verschiedene Arbeitsbereiche inkl. eigene Administration
- in den Bereichen verschiedene Aufträge / Auftraggeber / Projekte / Kunden
- die Daten browsen und allenfalls korrigieren
- Daten exportieren als Tabelle in eine Rechnung (Faktur)
- ev. statistische Auswertung

Gibt es da schon etwas? - wäre jemand bereit, etwas in dieser Richtung weiterzugeben?
- natürlich strikt nur für meinen eigenen Bedarf. Habe kein Interesse an Verkauf (und auch kein Talent) und programmiere nur für bestehende Kunden (die sowas nicht brauchen).
Daniel

Re: Zeiterfassung

Beitrag von Daniel »

Ok sorry, war wohl eine dumme Frage.
#-o

[Man kann natürlich auch bilateral über Preise reden.]
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Zeiterfassung

Beitrag von Armin »

Wir haben eine Zeiterfassung, die mit Xbase++ WAA im Browser läuft und z.B. jede Minute automatisch zurückmeldet.
Das hat den Vorteil, dass keine extra Endebuchung vorgenommen werden muss. Solange das Fenster aktiv ist, läuft der Timer.

Grüße, Armin
Daniel

Re: Arbeitszeit-Erfassung

Beitrag von Daniel »

Danke für Deine Antwort, Armin!

Also ich wollte hier einfach mal herumhören, wer sich mit dem Thema Arbeitszeit-Erfassung schon mal befasst hat - und was es da allenfalls für Konzepte gibt. Oben steht ja schon was über Zeitformate u.a.

Ich ärgerte mich einfach jedesmal, wenn ich Rechnung stellen will, und all meine Einträge in ein Spreadsheet addieren sollte. Ich mache ja nicht für jedes Programmteil eine Spalte, sondern nur für die verschiedenen Tätigkeits-Arten, wie Programm-Entwicklung, Administration, Weiterbildung ...

Seit einiger Zeit habe ich zwar ein Zeiterfassungs-Programm, doch bei dem habe ich keinen Zugriff auf die Daten und kann es auch nicht anpassen. Einfach Export zu Excel geht. Immerhin kann ich die Zeiten noch editieren, denn manchmal kommt ein Telefon, und man vergisst, die Zeit am Projekt zu stoppen.

- Jetzt, - Armin - Dein Programm, das im Browser läuft, misst das einfach die Zeit, die ich "online" bin, oder macht das noch anderes?

Das Fremdprogramm, das ich oben erwähnte, misst einerseits "Anwesenheit", anderseits "Job-Dauer", jeweils Beginn- und Endezeit. Die "Jobs" kann man als Unter-Kategorien von "Projekten" eröffnen und Projekte auch wieder abschliessen und abrechnen.
Soweit ganz praktisch.

P.S. es geht mir keineswegs darum, jemandem seine Source abzuschwatzen, sondern um Erfahrungsaustausch.
Man muss ja das Rad nicht neu erfinden - und wenn mir etwas hilft, gebe ich auch gern was dafür.
Das Ganze wäre mir im Moment zu gross, da scheue ich mich, damit anzufangen, wenn ich es nicht zu Ende bringe.
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Zeiterfassung

Beitrag von Armin »

Hallo Daniel,

das Programm, das ich erwähnt habe (Web-Oberfläche) macht Job, bzw. Auftrags- und Projekt Zeiterfassung. Ich habe das auch nur erwähnt wegen der dauerhaften, bzw. getakteten Rückmeldung.

Ausserdem habe ich eine Xbase++ CRT Zeiterfassung für Werkstattaufträge mit Kommen/Gehen und Auftragszeiterfassung, die nicht ständig rückmeldet - hier muss das Ende gebucht werden, bzw. mit einem neuen Auftrag begonnen werden.

Grüße, Armin
Daniel

Re: Zeiterfassung

Beitrag von Daniel »

Hallo Armin, Jimmy und wer hier noch mitliest ...

Bitte verzeih, dass ich erst jetzt antworte. Die Sache ist - näher betrachtet - gar nicht so einfach. (Und ständig kommt was dazwischen)
Es gibt viele Möglichkeiten, die Zeiten zu erfassen, resp. das in eine Struktur abzubilden.
Aber man will es ja auch auswerten und den produktiven Teil einem Kunden verrechnen können. Dort verliere ich am meisten Zeit.
Oft kann ich nicht den ganzen Tag an einem Projekt arbeiten, sondern es gibt Administratives, ev. private Dinge zu erledigen, Abklärungen, die man nicht voll weiterverrechnen kann.

Armin, kannst Du noch etwas dazu sagen, wie du das bei deiner Auftragszeiterfassung gelöst hast?
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Zeiterfassung

Beitrag von Armin »

Hallo Daniel,

ja kann ich... aber ich glaube nicht, dass das Programm für Dich was wäre. Es ist Teil eines Warenwirtsschaftsystem für Kunststoffspritzer mit Formenbau. Für diesen Formenbau gibt es das Zeiterfassungssystem auf Auftragsebene. D.h. es muss ein Auftrag erfasst sein um darauf Zeiten erfassen zu können. Aufträge kann man dann auch liefern und berechnen. Dazu gibt es alle möglichen Auswertungen...

Man bucht am Rechner Tätigkeitsbeginn, Unterbrechen, Wiederaufnahme oder Beenden unterbrochene Tätigkeit.
Zusätzlich kann man auch noch Kommen/ Gehen wählen.

Grüße, Armin
Daniel

Re: Zeiterfassung

Beitrag von Daniel »

Danke, Armin

Also behalte ich das Thema im Hinterkopf und überlege mir, wie ich das am Besten strukturieren könnte.
Antworten