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 ⏩

Patrick_82

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


MzKlMu

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.
Gruß Klaus

DF6GL

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.

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

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

DF6GL

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.


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

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

DF6GL

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

So sehen die derzeitigen Beziehungen aus.

Gruss

Patrick

Patrick_82

Ok, ich werde mich heut abend mal ran setzen, die Tabellen mal vorbereiten und mich mal rein denken. danke schon mal

Gruß

Patrick

DF6GL

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.

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

Ok super vielen dank, werde ich machen.

Gruß

Patrick

Hondo

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

DF6GL

Hallo Andreas,

Vorsicht..   :D  Es sollen mehrere Mitarbeiter an mehreren Aufträgen arbeiten können.  Dafür ist eine weitere m:n-Zwischentabelle erforderlich.
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, 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

Patrick_82

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