Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Patrick_82 am Januar 29, 2020, 10:58:19

Titel: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 10:58:19
Hallo zusammen,

ich bin neu hier im Forum und stehe vor folgendem Problem.

Ich möchte bzw habe mir ein Access Datenbank zu Auftragszeiterfassung gebastelt.

Zur groben Übersicht – Ich habe einen Auftrag - der durch mehrere Mitarbeiter - an mehren Tagen bearbeitet werden soll.

Die Gliederung meiner Tabellen sieht wie folgt aus:

Tbl_Auftrag – Auftragsnummer und dem Inhalt 

Tbl_ Mitarbeiter – Personalnummer und Namen

Tbl Einstempeln – die Mitarbeiter sollen sich mittels  Einstempeln Button (Zeitstempel = =jetzt() )  auf ihren jeweiligen Auftrag anstempeln. Ich habe dazu ein Formular auf welchen sich zwei Texteingabefelder befinden wo einmal die Auftragsnummer und die Personalnummer eingegeben werden muss.

Tbl_Ausstempeln – genauso wie beim Einstempeln.

Diese lasse ich mir über eine Abfrage anzeigen – funktioniert bis dahin auch alles super
Ich habe nun folgendes Problem mit den Zeiten. Wenn sich der Mitarbeiter am ersten Tag ein- und ausstempelt, funktioniert es alles hervorragend. Wenn er dies am zweiten Tag macht, dann werden die Zeiten vom Vortag überschrieben, da er sich ja erneut mit den gleichen Daten vom Vortag anmeldet. Allerdings habe ich bei der now Funktion nur die Uhrzeit anzeigen lassen, nicht das Datum.

Mein Ziel ist es, alle Zeiten zu erfassen und diese mir zum dazugehörigen Auftrag anzeigen zu lassen.
Ich hoffe mir konnte noch einer etwas folgen – vielleicht hat einer von euch eine Idee dazu wie man den Fehler beheben könnte.

Viele Grüße

Patrick

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: MzKlMu am Januar 29, 2020, 11:30:36
Hallo,
Einstempeln und Ausstempeln gehört in eine Tabelle.
Das Format des Feldes (hh:nn) ist bedeutungslos mit Jetzt() wird das Datum immer mit gespeichert.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 11:44:09
Hallo und willkommen im Forum..

auf den ersten Blick erscheint der Tabellenaufbau falsch zu sein.


Zeige bitte einen Screenshot des Beziehungsfensters.


Es werden neben tbl_Auftrag und tbl_Mitarbeiter zusätzlich benötigt:

tblAuftragMitarbeiter ( mit m:n-Beziehung zu tbl_Auftrag und tbl_Mitarbeiter)

AMID (Primärschlüssel)
AM_MAID_f (Fremdschlüssel zu tbl_Mitarbeiter)
AM_AufID_f (Fremdschlüssel zu tbl_Auftrag)
.
.



tblAuftragMitarbeiterZeiten ( mit n-Beziehung zu tbl_AuftragMitarbeiter)


AMZID (Primärschlüssel)
AMZ_AMID_f (Fremschlüssel zu tblAuftragMitarbeiter)
AMZ_AnfZeit  (Datum/Uhrzeit)
AMZ_EndZeit (Datum/Uhrzeit)
AMZ_Notiz (Text)
.
.
In einem Formular mit Datenherkunft zu tblAuftragMitarbeiterZeiten wird zum Anstempeln die Datum-Uhrzeit (Now() )  als AnfZeit in einen neuen Datensatz, beim Ausstempeln dann die aktuelle Datum-Uhrzeit als EndZeit in den selben DS geschrieben.

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 11:45:45
Hallo,

das heisst also, wenn das Datum mit übertragen wird, dann überschreibt sich der Datensatz bzw die Zeile nicht ?
Sondern es wird immer eine neue Zeile angelegt. Oder verstehe ich da jetzt etwas falsch ?Nehmt mir meine seltsamen Fragen bitte nicht übel, aber Access ist für mich Neuland

Gruss

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 11:50:40
Hallo,

jedes  Anstempeln wird mit Datum mit Uhrzeit  in einen neuen DS abgelegt,  das Ausstempel Datum mit Uhrzeit wird (später) in den selben Datensatz ins Feld EndZeit geschrieben.

Das sollte eigentlich per Prozedur und nicht manuell geschehen, so dass ein Überschreiben gar nicht für den User möglich ist.


Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 11:54:40
Vielen Dank für die ausführliche Antwort , ich werde dann einen Screenshot schicken, allerdings sieht es in keinster weise so aus, wie du beschrieben hast.

Deine Nachricht kann ich jetzt leider aber nur bis zur hälfte verstehen - alles weitere - das versteh ich momentan nur Bahnhof.

Könntest du mir unter Umständen was die Einrichtung der Tabellen geht, etwas unter die Arme greifen.

Gruß Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 12:04:37
Hallo,

wenn es nicht so aussieht, dann ändere es. 

Was ist daran nicht zu verstehen? Konkrete Fragen können konkret beantwortet werden.. ;)

Wir werden schon weiterkommen.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 12:39:51
So sehen die derzeitigen Beziehungen aus.

Gruss

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 12:54:41
Ok, ich werde mich heut abend mal ran setzen, die Tabellen mal vorbereiten und mich mal rein denken. danke schon mal

Gruß

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 13:04:35
Hallo,

ok..

Wirf die beiden Stempel-Tabellen heraus und baue neue Tabellen ein, so wie ich es Dir beschrieben habe.

Die Auftrag und Mitarbeiter -Tabellen sind aber nur ein "Torso".  Da gibt es bestimmt noch viele weitere Daten, die erfasst werden müssen. Das hängt aber von der grundlegenden Aufgabe der DB ab.


Ersetze zudem reservierte Wörter durch einen sinnvollen Namen ("Name" --> "Nachname").


Vergiss das Setzen der Beziehungen nicht.  Danach lädst Du die DB hier hoch, komprimiert/repariert und gezippt.

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 13:07:25
Ok super vielen dank, werde ich machen.

Gruß

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 13:13:12
Oje, da ist einiges nicht richtig.
die beiden Tabellen in der Mitte kannst du löschen, die sind falsch.
Statt dessen brauchst du nur 1 Tabelle - nenne diese z.B. tblAuftragszeiten o.Ä.
Die Felder sind dann ID (Zahl), AuftragsID (Zahl), PersonalID (Zahl) (besser man bezeichnet ID-Werte auch mit ...ID), Arbeitsbeginn (Datum), Arbeitsende (Datum).
In den beiden Tabellen links/rechts würde ich die Felder AuftragsID und MitarbeiterID einfügen, beide als Zahl und Primärschlüssel. Auftragsnummer und Personalnummer können dann als Text ausgeführt werden um beliebige Zeichen aufzunehmen.
Wichtig ist noch dann beim Verknüpfen dass referentielle Integrität eingestellt wird und 1:n verknüpft wird.
Wenn jetzt ein Mitarbeiter einstempelt wird das in die Tabelle mit einer Einfügeabfrage geschrieben:
Currentdb.Execute "Insert into tblAuftragszeiten (AuftragsID, PersonalID, Arbeitsbeginn) Values (4711, 3319, " & Format(Now(), "\#yyyy\-mm\-dd hh:mm:ss\#") & ")"
Wenn der Mitarbeiter ausstempelt wird das mit einer Aktualisierungsabfrage gemacht. Dazu muss zuerst der Datensatz geholt werden wo das Ausstempel-Datum geschrieben wird. Wird dieses nicht gefunden wurde vergessen einzustempeln.
Dim CheckinID As Long
CheckinID = Nz(DLast("ID", "tblAuftragszeiten", "AuftragsID=4711 AND PersonalID=3319 And Arbeitsende is Null"), 0)
If CheckinID > 0 Then
    CurrentDb.Execute "Update tblAuftragszeiten Set Arbeitsende=" & Format(Now(), "\#yyyy\-mm\-dd hh:mm:ss\#") & " Where ID=" & CheckinID
Else
    MsgBox "Fehler beim Ausstempeln!"
End If


Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 13:17:40
Hallo Andreas,

Vorsicht..   :D  Es sollen mehrere Mitarbeiter an mehreren Aufträgen arbeiten können.  Dafür ist eine weitere m:n-Zwischentabelle erforderlich.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 14:31:29
Hallo Franz,
Zitat von: DF6GL am Januar 29, 2020, 13:17:40
Es sollen mehrere Mitarbeiter an mehreren Aufträgen arbeiten können.  Dafür ist eine weitere m:n-Zwischentabelle erforderlich.
Das ist ein Struktureller Fehler des TE.
Ein MA kann immer nur an einem Projekt gleichzeitig arbeiten - und es kann seine Arbeitszeit immer nur für 1 Projekt abgerechnet werden.
D.H. wenn der MA entscheidet für eine anderes Projekt zu arbeiten hat er das aktuelle auszuchecken und das neue einzuchecken.
Wie soll man denn sonst dem Kunden die Arbeitszeiten anrechnen?
Denke der TE sollte mal überdenken was er mit dem Stempeln erreichen möchte. Arbeitszeit für die Entgeldentlohnung oder Projektzeit für die Kostenberechnung.

Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 15:01:51
Diese Stempeluhr dient eigentlich zur Errechnung der gesamten Projekt- Auftragszeit für nachfolgende Kalkulationen.
Ein kleines Beispiel :

MA1 arbeitet Mo am Auftrag, Am Di, Mi und einen teil vom Do arbeiten dann MA2 und MA3 am Auftrag. Und am Freitag prüft M4 das gebaute.

So habe ich wenn es funktioniert, einen Überblick über die gesamte Auftragszeit und auch den der einzelnen Schritte.

Ja ich werde mich heut abend mal ran setzen und mir als erstes mal die Tabellen anlegen und versuchen zu verknüpfen so wie es  DF6GL hier geschrieben hat.


Gruß

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 15:07:28
Dann kannst du das so wie von mir vorgeschlagen machen.
In die Tabelle tblProjektzeit wird ja neben ProjektID auch PersonalID gespeichert.
So kannst du in einer Abfrage recht einfach herausfinden wer wie lange an einem Projekt gearbeitet hat bzw. wie lange von allen MA an einem Projekt gearbeit wurde.
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 15:21:53
Ok, vielen Dank schon mal für euere Bemühungen! Ich werde es heut abend gleich testen und berichten, ob es so funktioniert.

Danke

Gruß
Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 16:38:54
Hallo,

@Andreas:

Damit würden wir eine Normalisierung der DB ignorieren, bzw. verletzen und in Folge Probleme erzeugen.


Es kann durchaus sein, dass weitere Felder in der "tblAuftragsMitarbeiter"  hinzukommen, weil sie für spätere Auswertungen erforderlich sind, z. B. eine Zeitvorgabe, die einem MA für die Arbeiten an einem Projekt gegeben sind.
Oder eine Aufstellung von Arbeitsmitteln oder Ähnlichen. 

Eine HFO/Ufo-Konstruktion (Anzeige der Arbeitszeiten (UFO) für die Arbeiten eines bestimmten MA an einem bestimmten Projekt (HFO) gestalten sich dann problematisch.





Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 16:47:26
Hallo Franz,
Zitat von: DF6GL am Januar 29, 2020, 16:38:54
Es kann durchaus sein, dass weitere Felder in der "tblAuftragsMitarbeiter"  hinzukommen, weil sie für spätere Auswertungen erforderlich sind, z. B. eine Zeitvorgabe, die einem MA für die Arbeiten an einem Projekt gegeben sind.
Und? Die von mir vorgeschlagene Tabelle wird doch auch 2x 1:n verknüpft und kann bel. erweitert werden?!
Wo ist da der Unterschied?
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 17:24:22
Ich habe mal eine DB Test angelegt und das Zeiterfassungsformular eingefügt  - komme aber leider nun so nicht weiter. Vielleicht könnte mir jemand weiter helfen ?

Gruß Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 18:12:17
Hallo,
zuerst mal, die ID's der Tabellen müssen vom Typ Autowert sein.
Dazu musst du aber die Daten vorher löschen, das kann man sonst nicht ändern.
Dann folgender Code in das Modul:
Public Sub Auftragsbeginn_abspeichern(ByVal AuftragsID As Long, ByVal PersonalID As Long)
    CurrentDb.Execute "Insert into tbl_Auftragszeiten (AuftragsID, PersonalID, Arbeitsbeginn) Values (" & AuftragsID & ", " & PersonalID & ", " & Format(Now(), "\#yyyy\-mm\-dd hh:mm:ss\#") & ")"
End Sub

Public Function Auftragsende_abspeichern(ByVal AuftragsID As Long, ByVal PersonalID As Long) As Boolean
    Dim CheckinID As Long
    CheckinID = Nz(DLast("ID", "tbl_Auftragszeiten", "AuftragsID=" & AuftragsID & " AND PersonalID=" & PersonalID & " And Arbeitsende is Null"), 0)
    If CheckinID > 0 Then
        CurrentDb.Execute "Update tbl_Auftragszeiten Set Arbeitsende=" & Format(Now(), "\#yyyy\-mm\-dd hh:mm:ss\#") & " Where ID=" & CheckinID
        Auftragsende_abspeichern = True
    End If
End Function


In das Form frm_Zeiterfassung folgende Ereignisse:
Private Sub btn_Auftragsbeginn_Click()
    Auftragsbeginn_abspeichern Me.txt_AuftragsID, Me.txt_PersonalID
    Me.txt_AuftragsID = vbNullString
    Me.txt_PersonalID = vbNullString
End Sub

Private Sub btn_Auftragsende_Click()
    If Auftragsende_abspeichern(Me.txt_AuftragsID, Me.txt_PersonalID) = False Then
        MsgBox "Fehler beim Ausstempeln des Auftrages " & Me.txt_AuftragsID
    Else
        Me.txt_AuftragsID = vbNullString
        Me.txt_PersonalID = vbNullString
    End If
End Sub

Achtung, ich hab die Textfelder vom Namen her abgeändert.

Mehr brauchst du jetzt erst mal nicht. Damit wird die Tabelle tbl_Auftragszeiten korrekt gefüllt.
Was jetzt noch fehlt sind globale Uservariablen. D.H. der User loggt sich mit seiner PersonalID ein, welche in einer Variablen gespeichert wird. Dann wird das Formular geöffnet, und es sollte eigentlich automatisch die PersonalID eingetragen werden in das Textfeld. Manipulationssicher wäre hier ein Bezeichnungsfeld über die Caption Eigenschaft.
Zur PersonalID sollte dann die AuftragsID automatisch gesucht und eingetragen werden die noch nicht eingestempelt ist. Würde ich auch über ein Bezeichnungsfeld wie oben machen. Dann muss im Code aber jeweils die Caption-Eigenschaft verwendet werden.
Im ungünstigen Falle gibt es mehrere Auftäge eines Benutzers die nicht ausgestempelt wurden. Da musst du entscheiden wie vorgehen. Z.B. Mitteilung dass Planungsbüro angerufen werden soll o.Ä.

Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 18:40:25
Hallo,

und hier mein Beispiel. (Ich bleibe bei meinem Tabellen-Vorschlag.  8) ) . Entscheide selber, was Dir entspricht.

Die Formulare sind Roh-Forms und können layoutmäßig entspr. Deiner Vorstellung angepasst werden. Das automatische Ausfüllen der  Zeiten ist noch nicht eingebaut. Das vorher vorhandene Form ist nicht in Gebrauch.

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 18:55:05
Leute, tausend dank für eueren Einsatz. Ich werde mich dann nochmal hinsetzen und mir die beiden Angebote anschauen. Lässt sich mein Nummerblock  dann wieder in das von euch neu kreierte Form mit einbinden. Oder zerschiesse ich da irgendwas? Entschuldigt meine dämlichen Fragen - wie gesagt ich bin grad am lernen.

Grüße aus dem Vogtland

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 18:56:27
Ein Beispiel hab ich auch ;)
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 19:38:55
Hallo,

ZitatLässt sich mein Nummerblock  dann wieder in das von euch neu kreierte Form mit einbinden

Den brauchst Du gar nicht.  Ein Auftrag (und die Person) werden über Kombis aus den Grundtabellen ausgewählt. Allenfalls für das frmAuftrag (Form zum Bearbeiten der Aufträge, das musst Du noch anlegen, wie auch das Form für das Personal) könnte das verwendet werden, macht aber eher keinen Sinn. Statt 10 mal auf die Buttons zu klicken, kannst Du die Nummer auch gleich in das entspr. Feld eintragen
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 20:23:29
Hallo,

anbei nochmal die Db mit weiteren Forms, An-Abstempeln-Buttons und Korrektur am Datentyp eines Tabellenfeldes.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 20:28:23
Franz,
deine DB hat einen Schönheitsfehler - Mitarbeiter 1 kann den Auftrag einstempeln, und Mitarbeiter 4711 den gleichen Auftrag ausstempeln. Wann hat also der eine Mitarbeiter angefangen und der andere aufgehört?
Auch können 2 Mitarbeiter nicht gleichzeitig an einem Auftrag arbeiten.
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 20:35:58
Ich schaue es mir eben grad an und ja Andreas hat recht. Es lässt sich leider nur einer anstempeln.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 20:39:53
Hallo,

ZitatMitarbeiter 1 kann den Auftrag einstempeln, und Mitarbeiter 4711 den gleichen Auftrag ausstempeln.

?? Das kann und soll doch sein..  Es werden nicht Aufträge an und abgestempelt, sondern die Zeiten erfasst, die ein MA an einem Auftrag gearbeitet hat.

ZitatAuch können 2 Mitarbeiter nicht gleichzeitig an einem Auftrag arbeiten.

?? wirklich ?  Ich denke, es ist weit verbreitet, dass an einem Auftrag mehrere Mitarbeiter beteiligt sind.


Beispiel: Du bekommst einen Auftrag, um eine DB herzustellen. Dann arbeiten Du und Dein Hiwi mit unterschiedlichen Zeiten an mehreren Tagen daran..   8) :D
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 20:41:18
Hallo,

habt Ihr die zuletzt gepostete DB angesehen?
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 20:45:15
ja die habe ich eben angesehen und da kann man leider auch nur einen Arbeiter pro Auftrag abstempeln, leider. Ansonsten schöne Sache!!!!

Danke schonmal für euere Mühe !!!
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 20:58:43
Hallo,

irgendwie stimmt was nicht.. Siehe Bilder. 
Da arbeitet Mitarbeiter  5  am Auftrag 19100 mit 3 an/abgestempelten Zeiten und MA 2 am selben Auftrag mit einer (anderen) Zeit.
(in der hochgeladenen DB gibt es andere Daten!)

Vielleicht liegt es an der Access _Version  (A2019).

Kompiliert die DB im VBA-Editor.....

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 21:09:08
Ja ich habe A2019 . und ich kann leider nur einen MA auf einen Auftrag stempeln. will ich einen zweiten hinzu fügen, kommt die Messagebox abstempeln nicht möglich
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 21:10:03
Hallo,
nein es funktioniert nicht.
Wenn Mitarbeiter 2 den Auftrag anstempelt muss ein neuer DS geschrieben werden.
Und solange Mitarbeiter 2 nicht angestempelt hat darf er auch nicht ausstempeln.
Aber davon abgesehen, wer bedient denn das Formular? Das ist doch der Mitarbeiter selbst.
Dann sehe ich es sehr kritisch dass der Mitarbeiter seine MitarbeiterID aussuchen darf. Fehleingaben sind da Vorprogrammiert.
Ebenso ein Mitarbeiter der ein Auftrag ausstempeln möchte. Warum sollte der die AuftragsID heraussuchen dürfen bzw. frei wählen? Er hat gefälligst den auszustempeln der vorher von ihm selbst angestempelt wurde, und kein anderer.

Aber das sind nur so ein paar dumme Gedanken von einem der sowas mal studiert hat.
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 21:18:15
Andreas, stimmt. Deswegen habe ich ja diese Maske erstellt und wollte diese den Mitarbeiter zur verfügung stellen. Ich wollte damit auch erreichen das man wirklich seine Personal Id und den Auftrag eingeben muss und nicht im drop down Menü frei wählen kann.

Andreas, ich bin eben gerade drüber deine geschickte Db zu testen. Wollte mein Formular einfügen und es mit deiner tbl verbinden. Hab auch nochmal die Personal- und Auftragstabelle erstellt, so wie du mir es vorhin geschrieben hast. Aber leider bekomme ich auch die Messagebox "Fehler beim Aufstempeln " was mach ich falsch ?
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 21:37:44
Andreas, du kannst ja hier mal schauen. ich hab dir mal eine Test db geschickt.

Nur noch als Randbemerkung : Die Tabelle Auftrag füttere ich logischerweise immer mit den anstehenden Aufträgen bevor der Mitarbeiter ihn bearbeitet und die Personaldatenbank auch .
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 21:56:55
Funktioniert doch?
Man kann halt nicht ausstempeln ehe man eingestempelt hat.
Daher sollte man das automatisieren wie in meinem Beispiel geschehen.
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 21:57:41
Hallo,

naja.. die Db ist ja im Rohzustand.  Berechtigungen sind nicht berücksichtigt und es geht ja erst mal um die Funktionalität

ZitatWenn Mitarbeiter 2 den Auftrag anstempelt muss ein neuer DS geschrieben werden.
Genau das tut der Anstempelbutton.

ZitatUnd solange Mitarbeiter 2 nicht angestempelt hat darf er auch nicht ausstempeln.
Genau das tut der Anstempelbutton

ZitatAber davon abgesehen, wer bedient denn das Formular? Das ist doch der Mitarbeiter selbst.
Das ist nicht definiert worden und ist lediglich eine Frage der Ablaufsteuerung.

ZitatDann sehe ich es sehr kritisch dass der Mitarbeiter seine MitarbeiterID aussuchen darf. Fehleingaben sind da Vorprogrammiert.

Wenn man das steuern will, braucht es eine Benutzersteuerung, an Hand derer sich der aktuelle Nutzer authentifiziert und damit seine Personalnummer bekannt wird.  (Auch nicht Bestandteil der Anfangs-Bedingungen)


ZitatEbenso ein Mitarbeiter der ein Auftrag ausstempeln möchte. Warum sollte der die AuftragsID heraussuchen dürfen bzw. frei wählen? Er hat gefälligst den auszustempeln der vorher von ihm selbst angestempelt wurde, und kein anderer.

Nochmal: das ist eine Anforderung an die Ablaufsteuerung und hat nichts mit der Funktionalität zu tun. Wenn ein User seine Zeiten eintragen soll, dann wird ihm das Frm_AuftragPersonal so vorgesetzt, dass es schon mit seiner Personalnummer vorgefiltert wird und er nur den betreffenden Auftrag suchen (!) muß. D. h. ja nicht, den gespeicherten Auftrag über das Kombi "Auftrag" zu ändern.
Das Form (oder ein gleiches zusätzliches) muss so eingestellt werden, dass es dem User nur möglich ist, den betreffenden Auftrag auszuwählen (z. B. über ein zusätzliches, ungebundenes Kombi im Formularkopf) und die Buttons zu klicken.

Das alles ist  eine Frage des Bediener- und Berechtigungskonzeptes und hat nichts mit der DB-Funktion an sich zu tun.

Mich wundert nur, dass die DB sich bei Euch  scheinbar ganz anders verhält als bei mir.

Mir geht (ging) es darum eine Tabellenkonstruktion zu zeigen, mit der Arbeitszeit-Bereiche registriert werden können, die von mehreren Mitarbeitern an verschiedenen Aufträgen geleistet werden. Die Formulare haben bist auf die beiden Buttons keine besonderen Ablaufsteuerungen.  Wenn  Layoutänderungen oder weitere Bedingungen an die Forms gestellt werden, sind diese halt einzubauen.  Die Aufgabe war ja nicht, die Benutzersteuerung zu erfinden, sondern die Möglichkeit der Zeiterfassung zu realisieren.

Habe jetzt die DB und ein paar Screenshot hochgeladen.

Mich würde interessieren, ob die DB wie von mir gezeigt funktioniert oder nicht.




 
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 22:02:27
Franz, das funktioniert nicht.
Auftrag 19100, Mitarbeiter 1 -> anstempeln
Auftrag 19100, Mitarbeiter 2 -> anstempeln -> Fehlermeldung geht nicht.

Auftrag 19100, Mitarbeiter 1 -> anstempeln
Auftrag 19100, Mitarbeiter 5 -> abstempeln -> das dürfte nicht möglich sein da Mitarbeiter 5 nicht angestempelt hat.

Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 22:04:02
Franz, ja die db funktioniert soweit. Das heisst ich kann immer einen MA Einstempeln dann ausstempeln und den nächsten wieder ein und ausstempeln. Aber 2 oder 3 MA das geht nicht.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 22:09:04
Ja Andreas, ich kann jetzt in meinem Terminalfenster den Auftrag scheinbar anstempeln. Also das Fenster leert sich zu mindest ohne Fehlermeldung . Einen DS kann ich aber nicht finden. Und wenn ich die gleiche Auftragsnummer versuche auszustempeln, dann kommt die Messagebox aber ein DS wird nicht gespeichert .
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 22:21:42
Franz, du hast recht es soll nicht die Benutzersteuerung, ich sag mal erfunden werden. Es geht mir in erster Linie um die Funktionalität der kleinen Zeiterfassung. Ja und ein einfaches Anmeldeformular hab ich ja bereits in den Letzen Upload mit eingefügt. Dieses Anmeldefenster habe ich auch schon mit meinen Mitarbeitern besprochen. Sowohl sie, als auch ich fanden das für sehr gut und unkompliziert. Und ich denke, wir bekommen die db auf jeden fall zum laufen . ;)
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 22:22:54
Hallo

@Andreas:

Ich denke , Du machst einen Bedienungsfehler.

"Wählt" Du den MA über das Kombi "Mitarbeiter" aus?

Das wäre falsch und würde diesen Mitarbeiter zum Auftrag ändern(!)  und damit auch die Arbeitszeit-Zuordnungen zerstören...

Positioniere(!) auf die einzelnen Datensätze des HFO (Zuordnung der MAs zu den Aufträgen)  mit Hilfe der unten stehenden Navigationsleiste...

Wie schon gesagt,  eine Suchfunktion für einen Mitarbeiter an einem Auftrag ist NICHT eingebaut.

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 23:00:37
OK, bin hier mal raus. Solltest genügend Input zum bauen jetzt haben.

Doch nur noch eines:
Nicht denken was möglich ist sondern denken was sinnvoll ist und wie die späteren Abläufe sein werden. Wenn du dir darüber nicht im klaren bist brauchst du erst gar nicht Access aufzumachen und daran zu arbeiten.

So müsste es später ablaufen:
Der Mitarbeiter meldet sich an und stempelt dann einen Auftrag XY an. Damit hat sich für ihn bis zum ausstempeln die Datenbank erledigt! Was braucht der Mitarbeiter wissen wie lange wer wo arbeitete?
Bin ich Mitarbeiter gehe ich an ein Terminal, ziehe meine Karte durch zum authentifizieren und gebe eine Auftragsnummer ein und fertig. Danach schließt sich die Anwendung und der Mitarbeiter geht an sein Arbeitsplatz.

So müsste die Anwendung funktionieren, und nicht so ein Schicky-Micky mit Unterformular etc. Das braucht doch niemand außer selbstverliebte Programmierer für ihr ego.

So, habe jetzt eigentlich mehr geschrieben als ich wollte, ist mir auch egal.
So long
Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 23:05:15
ja, vielen dank für deine Hilfe

Gruss

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 29, 2020, 23:06:22
Hallo,

@Patrick:

Im Anhang eine erweiterte DB mit zusätzlichem Erfassungsform.

Ruf dieses Form nach erfolgreichem Einloggen im Deinem Einlogform mit


Dim lngPersID as Long

LngPersID =  <<PersonalID vom Einloguser ermittelt>>
Docmd.openform "frm_Zeiterfassung",,,,,,lngPersID


auf.


ZitatSo müsste die Anwendung funktionieren, und nicht so ein Schicky-Micky mit Unterformular etc.

Blende (mach unsichtbar) bis auf das "Auftrag suchen"-Kombi und die beiden Buttons alles (einschließlich UFO)  aus, was Dir im Erfassungsform nicht gefällt und Du wirst glücklich...  ::)
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Hondo am Januar 29, 2020, 23:27:25
ganz kurz noch von mir,
mein letztes Posting war nicht auf die Hilfe von Franz (DF6GL) gemünzt, nicht dass das falsch rüber kommt.
Die Hilfe von Franz ist eine wertvolle Hilfe für den TE und sollte auch genutzt werden.
Der TE sollte sich über den Ablauf intern im Klaren sein, am besten sich selbst aufschreiben und dann an die Umsetzung gehen.
Gruß Andreas
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 23:41:01
Ja, das weiß ich auch sehr zu schätzen. Und ich bin mir auch alles genauestens vorher aufgeschrieben und lange darüber nachgedacht, wie ich es gestalten möchte.
Ich möchte die bevorstehenden Aufträge in die Tabelle Auftrag Einpflegen, ohne jeglichen schicki Micki. Darüber hinaus  möchte ich dem MA der Produktion eben dieses einfache Terminalfenster zur Verfügung stellen, wo er seine PersonalID und die Auftragsnummer eintippt um somit die verbrauchte Zeit erfassen zu können. Nur leider gelang mir das nicht, dass ich eben nicht, dass sich mehrere MA darauf Einstempeln können. Deshalb habe ich hier im Forum nach Hilfe gesucht. Und ihr beiden habt euch wirklich auch sehr viel Mühe damit geben, dafür bin ich auch sehr dankbar. Ich hatte dir vorhin auch nochmal eine testdb gesendet wo ich mein Form und die restlichen Tabellen bereits eingefügt habe, wo eben nur die Fehlermeldung mit dem Ausstempeln kam.

Gruß

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 23:47:07
@Andreas, ich soll jetzt so zu sagen die Test db von dir öffnen, meine Form dort importieren und dann im meine Form VBA diesen code einfügen ??? Kann gerade nicht folgen.
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 29, 2020, 23:48:20
Ähh sorry nicht Andreas sondern Franz habe ich gemeint .
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 30, 2020, 10:02:34
Hallo,

Du solltest in der test.accdb ein Login-Formular einbauen, wie auch immer Du magst und willst. Dieses Login-Form bestätigt die Anmeldung des Users oder auch nicht.

Wenn die Bestätigung erfolgreich ist, fügst Du dort die u.st. Codezeile ein, um damit das Eingabeform aufzurufen. Dieses Eingabeform kann zwar auch selbst  geöffnet werden, hat jedoch keinen Sinn, weil dann die PersonalID fehlt.

Beim Login musst Du ja auch irgendwo her die PersonalID ermittelt haben.  Diese PersonalID  weist Du der Variablen "lngPersID" zu.

Damit wird das frm_Zeiterfassung aufgerufen und zeigt gleich einen Auftrag an, für den der MA arbeitet. Mit dem Suchen-Kombifeld kann ein anderer Auftrag, für den der MA auch arbeitet (was im Vorfeld definiert sein musste) ausgewählt werden. Mit den Buttons werden die aktuellen Zeiten (die jetzt nicht mehr mit diesem Formular editierbar sind) , in die Zeitfelder entspr. eingetragen. Die anderen Felder gesperrt und dienen nur zur Info.  wenn das nicht gewünscht ist, können diese Steuerelemente  auf unsichtbar gestellt und/oder das Layout nach Belieben angepasst werden.



Wenn die Zeiten zu korrigieren sind, darf/kann das nur ein "Superuser" oder "Admin" (im Normalfall der Arbeitsvorbereiter) tun, indem er das Form "frm_AuftragPersonal"  öffnet, zum entspr. Datensatz navigiert und die Zeiten ändert.

Wie gesagt:  eine diesbezügliche Ablaufsteuerung ist nicht eingebaut. Und ich will jetzt nicht eine komplett fix und fertige Applikation hier erstellen...


PS:

wo hast Du was gesendet?

Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: Patrick_82 am Januar 30, 2020, 12:32:37
@Franz

Hallo, nochmal vielen Dank für deine Hilfe - ich weiß das wirklich sehr zu schätzen. Ich hab mir jetzt die Sachen nochmals intensiv angeschaut, es ist bestimmt alles richtig und hat dir auch viel Mühe gemacht, nur kann ich dir leider nicht folgen. Wie gesagt ich bin absoluter Access Neuling. Ich möchte dir nochmal kurz erläutern wie ich mir die datenbank vorstelle.

Ich habe eine Tabelle ,,tblauftrag" angelegt, wo ich als Arbeitsvorbereiter die Aufträge mit ihren Nummern und Option immer einpflegen werde.

Die zweite Tabelle ,,tblmitarbeiter" pflege ich auch mit den Mitarbeiter Namen und ihren personalnummern.

Mein Ziel ist es mit einer dritten Tabelle, dass die Mitarbeiter über ein Formular die Auftragsnummer der von mir zugeteilten Arbeit eintragen, ihre Personalnummer eintragen und auf ,,Start" drücken. Wenn sie ihren Auftrag beendet haben dann geben sie wieder die Auftragsnummer und ihre Id ein und drücken auf stop.

Die Schwierigkeit bzw. wo ich jetzt hänge ist folgende: es arbeiten bis zu 4 MA parallel an einem Auftrag und alle sollen sich aber auf diesen anstemplen  bzw. abstempeln. Wenn ich das mit einer dritten Tabelle realisieren möchte, überschreibt immer MA 2 die Werte von MA 1.Deswegen suche ich hier im Forum Hilfe bei jemanden der dies realisieren kann. Ich bin auch gern bereit eine Zahlung dafür zu leisten.

Gruss

Patrick
Titel: Re: Mitarbeiter Zeiterfassung mit Zeitstempel
Beitrag von: DF6GL am Januar 30, 2020, 14:04:44
Hallo,

schau mal hier :  https://www.access-o-mania.de/forum/index.php?topic=6969.0

schreib mir eine Mail an die dort angegebene Adresse.
Zitat
Mein Ziel ist es mit einer dritten Tabelle, dass die Mitarbeiter über ein Formular die Auftragsnummer der von mir zugeteilten Arbeit eintragen, ihre Personalnummer eintragen und auf ,,Start" drücken. Wenn sie ihren Auftrag beendet haben dann geben sie wieder die Auftragsnummer und ihre Id ein und drücken auf stop.


ZitatWenn ich das mit einer dritten Tabelle realisieren möchte, überschreibt immer MA 2 die Werte von MA
Mich wundert das nicht...  wundern würde ich mich, wenn es nicht so wäre.

Ich versteh aber nicht.. ??  Das mit der 3. Tabelle ist doch schon längst überholt.  Die Lösung hast Du mit meiner DB.

Was Du Dir vorstellst, ist eine spezielle Ablaufsteuerung, die halt noch gebaut werden muss. Das hat aber mit dem Erfassen der Zeiten als solche aber nichts zu tun.

Es stellt sich jetzt noch weiterhin die Frage, wann, wie und wo die MAs die Zeiten stempeln sollen:  am selben PC, an verschiedenen PCs, sind die PC's vernetzt, soll das Stempeln gleichzeitig von mehreren MAs erfolgen können, etc...


Aber schreib mir eine Mail mit deinen Kontaktdaten, dann reden wir darüber. Vermutlich ist das effizienter als hier "Romane" zu schreiben.  ;) :D