Januar 24, 2021, 04:36:04

Neuigkeiten:

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


Zeiterfassung für vielzahl von Projekten

Begonnen von Pizzaliebhaber, Januar 10, 2021, 20:31:06

⏪ vorheriges - nächstes ⏩

Pizzaliebhaber

Hallo zusammen,

ich bin komplett neu eingestiegen zum Thema Access und hab mich etwas eingelesen. Bitte verzeiht "dumme" Fragen oder einfache Anfängerfehler.

Habe folgende Aufgabe vor mir:

Verschiedene Mitarbeiter arbeiten an verschiedenen Projekten und erfassen dazu ihre Arbeitszeiten, also wer hat wie lange an welchem Projekt gearbeitet. Ein Projekt ist immer genau einem Themenfeld zugeordnet(Tabelle Projektgruppierung), zuständig können für ein Projekt aber mehrere Mitarbeiter sein(Tabelle Zuständigkeiten).
Die Zeiterfassung möchte ich über ein Formular machen, zuerst sollte man den Namen des Mitarbeiters über ein Kombinationsfeld auswählen können, anschließend  die Projektgruppe, und dann das jeweilige Projekt und dann seine Arbeitszeit erfassen können mit dem entsprechenden Tag (der standardmäßig immer auf das aktuelle Datum eignestellt sein sollte).
Es sollen nur die Projekte angezeigt werden, für die der Mitarbeiter zugeordnet ist (laut Tabelle Zuständigkeiten) damit er sich besser zurechtfindet.


Ich glaube, dass ich hier mit Unterformularen arbeiten muss, die immer Werte von dem "übergeordneten" Formular aufnimmt. Stimmt das so?

Ich hab schon etwas rumgespielt, allerdigns kann ich immer nur Datensätze einsehen und keine neuen erstellen.

Ich kann mit den Begriffen "Steuerelementinhalt" und "Datensatzherkunft" wenig anfangen in der Entwurfsansicht, kann mir vielleicht jemand erkären was hier gemeint ist?

Dazu brauche ich auch noch ein Forumalr, um neue Projekte erfassen zu können.

Vielleicht erst mal der Reihe nach: Kann ich mit dem Datenmodell weiterarbeiten oder ist da schon ein grober Fehler drinnen?
Ich werde bestimmt auch Abfragen brauchen, die dann die richtigen Projekte filtern (also alle Projekte aufzeigen von Mitarbeiter x im Themenfeld y) und die dann in das Formular eingebunden werden?

Bin um jede Hilfe sehr dankbar :)

MzKlMu

Hallo,
auf den 1. Blick würde ich sagen das passt.
Geben den ID's vernünftige Namen (MitarbeiterID, ProjektID usw.) nicht einfach ID.
An das entsprechende Fremdschlüsselfeld hängst Du dann ein _F an (MitarbeiterID_F). Kannst auch MitarbeiterNr und MitarbeiterNr_F verwenden. Aber einheitlich bitte. Es ist vorteilhaft (gerade für den Anfänger) wenn man Primär und Fremdschlüssel zweifelsfrei unterscheiden kann. Überhaupt ist es zweckmäßig, wenn es in der ganzen DB keine gleichen Feldnamen gibt. Name als Feldname ist TAbu, das ist einreserviertes Wort und darf für eigene Namen nicht verwendet werden, da gab Access auch eine Warnung aus, die Du aber ignoriert hast.

Steuerelementinhalt=Tabellen/Abfragefeld für diese Daten
Datensatzherkunft=Datenquelle=Tabelle/Abfrage mit den entsprechenden Datensätzen.

Zu den Formularen:
Du hast 2 Möglichkeiten.
1.
Hauptformular Mitarbeiter
Unterformular für die Zeiterfassung mit Auswahl (Kombifeld) des Projekts
oder
2.
Hauptformular Projekt
Unterformular für die Zeiterfassung mit Auswahl (Kombifeld) des Mitarbeiters

Hier noch was zum Lernen:
https://www.access-tutorial.de/
Gruß
Klaus

Pizzaliebhaber


Hab Variante 2 gewählt und hab jetzt ein Hauptformular Mitarbeiter und ein Kombifeld mit den Projekten, die Zeiten können schon erfasst werden.

Womit ich jetzt noch ein Problem habe ist das Filtern nach den Projekten, es sollen ja nur die Projekte angezeigt werden im Kombifeld, für die der Mitarbeiter verantwortlich ist (Zurodnung erfolgt über die Tabelle Zuständigkeiten, hier ist die Mitarbeiter_ID und die Projekt_ID miteinander verknüft). Läuft das über eine Abfrage, die als "Input" den Ausgewählten Mitarbeiter hat und dann die Projekte "ausspuckt", die ihm Zugeordnet sind? Wie man eine Abfrage erstellt weiß ich, aber wie binde ich sie in das Unterformular ein und wie bekomme ich den ausgewählten Mitarbeiter da rein .....

Würde mich nochmals über einen Tipp sehr freuen :)


Die Internetseite ist super, leider konnte Sie mein "Filterproblem" nicht lösen :/

Pizzaliebhaber


DF6GL

Hallo,

m. E. stimmt das Modell noch nicht...

Wenn "Zuständigkeiten"   die "ProjektMitarbeiter" (umbenennen in "tblProjektMa") sind, für die eine Zeiterfassung erfolgen soll, so muss die Tabelle "Zeiterfassung" als n-Tabelle (besser benamst als "tbltblProjektMaZeiten") mit  "Zuständigkeiten"  ("tblProjektMa") in Beziehung gesetzt werden. Die Beziehung zu "Mitarbeiter" ("tblMitarbeiter") entfällt.


Pizzaliebhaber

Hallo,

Danke für die Anregung, das ergibt durchaus Sinn. Du meinst so wie im Anhang?


Brauche aber nach wie vor eine Verknüfung, damit in meinem Unterformular nur nach den Projekten gefiltert wird, die dem Mitarbeiter auch zugeordnet sind. Wie kann ich diese Info dem Unterformular mitteilen? Benötige ich hier einen VB Code?

DF6GL

Hallo,

 es stimmt noch nicht... und vergiss erst mal Formulare und Filterungen. Die ergeben sich von ganz allein, sobald das Tabellenschema korrekt und in sich logisch ist.


a) Die Beziehung zwischen tblProjekte und tblProjektMaZeiten muss entfernt werden.

b) Orden die Tabelle im Beziehungsfenster so an, dass 1-Tabellen immer links der entspr. n-Tabelle liegen, also tblMitarbeiter unter tblProjekte legen. (Das ist nur optische "Verschönerung" zur Darstellung der Tabellenhirarchien.)


c) Benenne alle Feld in sinngemäße Namen um.  (Z . B. Zuständigkeit_ID in ProjektMa_ID)



Erstelle dann für jede Tabelle je ein Endlosform, Ausnahme ist frmProjekte als Einzelform

In frmProjektMA kommt im FormularFuß (!) das frmProjektMaZeiten als UFO(-Steuerelement) zu liegen. Access wird das nicht gefallen und meckert, aber Du bist der Chef und setzt anschließend frmProjektMa wieder auf Endlosform zurück.

Letztendlich wird frmProjektMA als UFO in frmProjekte im Detailbereich eingebaut.


Bei allen UFOs nicht vergessen, die UFO-Steuerelement-Eigenschaften "Verknüpfen von/Nach" auf die korrekten Schlüsselfelder zu setzen, falls das noch nicht von Access selber erledigt wurde.

Die Daten aus tblDringlichkeit und tblProjektgruppierung werden mittels Kombifeld in frmProjekte ausgewählt.



Wenn das soweit steht und auch korrekt mit vorhandenen Daten funktioniert, kann man sich Gedanken um Filterungen und um anderweitige Pflege der Daten machen.


Pizzaliebhaber

Danke für die Hinweise, die beiden Unterformulare scheinen miteinander verknüft zu sein, nur wenn ich im Hauptformular ein Projekt auswähle passiert unten nichts. Sollte das schon funktionieren?

Das Layout sieht nicht sehr gut aus, vielleicht hätte ich die Formulare anders anlegen sollen in einem besseren Layout. Hab die Formulare mit dem Formular-Assistent angelegt...

Hab das ganze mal in den Anhang gepackt, wäre super wenn Du kurz drüber schauen kannst ob das schon so passt als Grundlage.

Vielen Dank für die Hilfe :)

DF6GL

Hallo,

prinzipiell hat es funktioniert, nur die Formularlayouts waren nicht passend.

Die Nachschlagetabellen müssen zudem als Kombifelder ausgeführt werden.  Den Datentyp für "Zeit" habe ich in "Währung" (Anzeigeformat Standardzahl) umgesetzt, um die Arbeitszeit als "Industriestunden" erfassen zu können.

 

Pizzaliebhaber

Hallo,

Danke für die Tipps:)

Ich denke ich muss die Anordnung der Formulare ändern, ich möchte ja zuerst den Mitarbeiter auswählen, anschließend das Projekt und anschließend die Zeit dazu erfassen.

Könntest du mir bitte einen Tipp geben, wie ich das Filtern umsetzten könnte? Also dass auch nur die Projekte angezeigt werden, bei denenen der ausgewählte Mitarbeiter auch zugeordnet ist (für den Mitarbeiter mit der ID 1 sollen z.B. nur die Projekte angezeigt werden, für die in der tblProjektMa eine Verknüfung besteht zwischen der Mitarbeiter_ID_F und Projekt_ID_F). Dazu müsste ich den Wert des Kobifelds irgendwie auslesen können, in dem ich den Mitarbeiter auswähle.

DF6GL

Hallo,

Du braucht ein Formular "frmZeiterfassung", mit dem Du die Zeiten entspr. Deines Wunsches eingibst.  Siehe Anhang

Pizzaliebhaber

Vielen Dank :) Sieht garnicht so einfach aus mit den SELECT Befehlen.

Es wäre auch bestimmt umsetzbar, dass man zuerst den Mitarbeiter, dann die Projektgruppierung und dann das Projekt auswählt oder?

DF6GL

Hallo,

ja, das geht auch, das Prinzip hab ich gezeigt.  Die neue Reihenfolge kannst Du ja danach selber umsetzen.

Siehe auch http://www.donkarl.com/?FAQ4.36