Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Mitarbeiter Zeiterfassung mit Zeitstempel

Begonnen von Patrick_82, Januar 29, 2020, 10:58:19

⏪ vorheriges - nächstes ⏩

Hondo

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

Patrick_82

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

DF6GL

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.





Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Hondo

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

Patrick_82

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

Hondo

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

DF6GL

#21
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.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Patrick_82

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

Hondo


DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DF6GL

Hallo,

anbei nochmal die Db mit weiteren Forms, An-Abstempeln-Buttons und Korrektur am Datentyp eines Tabellenfeldes.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Hondo

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

Patrick_82

Ich schaue es mir eben grad an und ja Andreas hat recht. Es lässt sich leider nur einer anstempeln.

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DF6GL

Hallo,

habt Ihr die zuletzt gepostete DB angesehen?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access