Hi,
ich arbeite gerade an einer Datenbank zur Arbeitszeiterfassung im kleinen Betrieb meiner Eltern. Dabei sollen die Stunden die ein Mitarbeiter an einem bestimmten Datum in einem zugewiesenen Objekt gearbeitet hat einmal wöchentlich erfasst werden. Ich habe mir vorgestellt das Startdatum der Woche und den Mitarbeiter auszuwählen und daraufhin eine Eingabemöglichkeit für die einzelnen Tage der Woche für Objekt, Arbeitszeitart und Arbeitszeit zu erhalten. Wenn man für jeden alles wiederholt einzeln eingeben muss finde ich das relativ unelegant gelöst.
Vielleicht könnt ihr mir weiterhelfen
Gruß Brotnascher
Hi Brotnascher,
ich bin ja jetzt sicherlich nicht der erfahrenste hier, aber ich versuch trotzdem mal "mitzudenken".
Viele Möglichkeiten da etwas fix vorzugeben sehe ich da jetzt nicht.
Einziger gleicher Wert für alles ist ja scheinbar deine "Woche", zu der du alles zuordnen willst?
Vielleicht solltest du uns den höheren Sinn schildern, dem die Zeiterfassung dann dienen soll. Damit könnte man evtl. ins richtige Fahrwasser für das Formular kommen.
Ansonsten kann man natürlich viele Erleichterungen über "wenn/dann"-Logiken oder Dropdown Lösungen in den einzelnen Formularfeldern schaffen... aber dafür müsste man wissen wie viele verschiedene Werte da von jedem Feld vorhanden sind, um da eine Empfehlung für eine sinnvolle Benutzeroberfläche auszusprechen.
Grüße,
mohab
Hi Mohab,
die Benutzeroberfläche ist erstmal kein Problem. Kern der Sache ist es für den jeweiligen Mitarbeiter die Arbeitsstunden der vergangenen Woche einzugeben. Um nicht jedes mal das Formular neu starten und Mitarbeiter und Datum neu auswählen zu müssen hatte ich mir erhofft, dass ich die Auswahl dafür einmal treffe und dadurch mehrere Datensätze anlege, bei denen dann einzeln die restlichen Werte (welches Objekt, Welche Zeitart (pauschal/festangestellt/Urlaub/Krankheit/Ausgang) ergänzt werden können. Anbei noch eine Darstellung der Beziehungen und Tabellen in der Datenbank.
na dann würde es doch ausreichen für die Felder ma_ID_F und Datum_zeiterf eine Regel zu hinterlegen, die immer automatisch den letzten eingegeben wert übernimmt. natürlich so das das Feld überschreibbar bleibt, wenn du zu einen neuen Mitarbeiter einträgst.
so kannst du beliebig viele Daten zu einem Mitarbeiter erfassen, ohne die Woche und den Mitarbeiter neu eingeben zu müssen.
Ich habe das mit Ereignis "bei Fokuserhalt" gelöst. Wenn du dann in das Feld springst erzeugt das Makro den Wert automatisch, den du dann entweder so lassen und weiterspringen kannst, oder dann eben überschreiben.
vielleicht ist das ein Denkansatz?
Grüße,
mohab
Danke für die schnelle Antwort, ich glaube ich habe mich vorher ein wenig undeutlich ausgedrückt. Die Arbeitsstunden werden für die zurückliegende Woche, da aber für jeden Tag einzeln erfasst. Von daher müsste ich mit der hinterlegten Regel trotzdem noch jedes mal das Datum ändern. Den vorhergehenden Mitarbeiter kann ich auch einfach mit Strg + # übernehmen. :) Wie gesagt ich habe mir da eine elegantere Lösung vorgestellt, ohne diese bisher selbst gefunden zu haben. Ich habe mir vorgestellt die Datensätze mit einer vba Funktion bzw über eine Anfügeabfrage per Knopfdruck nach Mitarbeiterauswahl zu erzeugen und diese dann über ein Endlosformular, welches über Abfrage alle Datensätze des Mitarbeiters im Datumsbereich von bis anzeigt, zu vervollständigen. Leider fehlt mir da noch ein wenig die Erfahrung um die gewünschte Anfügeabfrage zum laufen zu bringen. Ich habe dazu in diesem Forum schon einen Beitrag gefunden (http://www.access-o-mania.de/forum/index.php?topic=15955.0) jedoch komme ich mit der Beschreibung dort nicht wirklich zurecht (vor allem wegen der Diskussion am Ende welche Methode die richtige wäre).
Vielen Dank schon mal für deine Hilfe bisher
Brotnascher
Hallo Brotnascher,
du könntest das Eingabeformular in Haupt- und Unterformular aufteilen.
Im Hauptformular wählst du den Mitarbeiter und gibst den Zeitbereich in ungebundene Textfelder ein.
Auf Knopfdruck werden für diesen Mitarbeiter und Zeitbereich Datensätze angelegt.
Hierzu brauchst du eine Hilfstabelle mit den einzelnen Datumsangaben.
Die so generierten Datensätze werden anschließend im Unterformular angezeigt, wo sie dann ergänzt werden können.
Die Abfrage könnte per VBA erzeugt und ausgeführt werden:
Dim strSQL As String
strSQL = "Insert Into ZeitTabelle (mitarbeiter, arbeitsdatum) Select " & Me!txtMitarbeiter_ID & ", hlp.tabDatum From DatumsTabelle As hlp Where hlp.tabDatum Between " & Format(Me!datvon, "\#mm\/dd\/yyyy\#") & " AND " & Format(Me!datbis, "\#mm\/dd\/yyyy\#")
CurrentDB.Execute strSQL
Me!uf.Requery
Danke Maggie für die schnelle und hilfreiche Antwort,
verstehe ich das richtig, dass ich dann in der Hilfstabelle jedes Datum hinterlegen muss ?
Ich werde das nachher daheim gleich mal ausprobieren.
Viele Grüße
Brotnascher
Zitatverstehe ich das richtig
Ja, so ist das.
Hallo
Es ist aber auch Möglich eine Hilftabelle mit für oder über einen Zeitraum sogar mit Son.- und Feiertage per VBA zu befüllen. Das wäre eine einmalige Prozedur.
So mal als Hinweis am Rande
Hi Stapi,
hast du dafür zufällig einen Code zur Hand?
Ich werde die nächsten Tage mal danach schauen und mir dann was zusammenbasteln. ;)
Grüße
Brotnascher