Tabelle soll automatisch gefüllt werden (Access)

RalfM, Mittwoch, 28.08.2019, 13:53 (vor 21 Tagen)

Hallo zusammen,
ich habe folgendes Problem:
Ich entwickle eine Anwesenheitsliste, die täglich aktualisiert werden soll.
Dazu gibt es eine Tabelle "Personal", die neben dem Feld "Vorname", "Nachname", "Personalnummer" eben auch die beiden JA/NEIN-Felder "Anwesend" und "Krank" beinhaltet.
Für diese Tabelle habe ich ein Formular in Tabellenansicht erstellt, in das täglich die Anwesenheit durch Setzen des Kontrollhakens vermerkt wird.
Für die Erfassung der Krankheitstage habe ich ein separates Formular entwickelt, in dem pro Mitarbeiter die Krankmeldungen erfasst werden. Über eine eigene Abfrage wird mir dann für den aktuellen Tag alle kranken Mitarbeiter angezeigt.
Nun hätte ich aber gerne, das mit Aufrufen dieser Abfrage dann auch gleich in die Tabelle "Personal" bei den betroffenen Personalnummern das Feld "Krank" auf "JA" gesetzt wird.

Und dann bräuchte ich dann auch noch eine Prozedur, mit der ich am Abend in der Tabelle wieder die Felder "Anwesend" und "Krank" auf "NEIN" setzen kann.

Kann mir jemand dabei helfen?

Tabelle soll automatisch gefüllt werden

RalfM, Mittwoch, 28.08.2019, 14:09 (vor 21 Tagen) @ RalfM

Hallo zusammen,
dank Internet habe ich für den 2.Teil meiner Frage schon die Lösung gefunden.
Ich führe für die Tabelle einfach eine Aktionsabfrage durch mit der die beiden Felder auf "NEIN" gesetzt werden.
Habe ich auch schon getestet - klappt einwandfrei.
Nur für das automatische Ändern einzelner Datensätze, da weiß ich noch nix

Tabelle soll automatisch gefüllt werden

Martin Asal @, Mittwoch, 28.08.2019, 14:24 (vor 20 Tagen) @ RalfM

Hallo Ralf,

es ist also möglich, dass in deiner Tabelle jemand zugleich als "Anwesend" und "Krank" erfasst wird. In der Praxis schleppen sich zwar häufig Kranke zur Arbeit, aber ich glaube nicht, dass du das so erfassen willst ;-) Darüber hinaus frage ich mich, ob es nicht sinnvoll sein könnte, auch nachträglich zu erkennen, wann jemand krank war. Mit deinem Tabellenaufbau lässt sich nur erkennen, wer heute gerade mal krank ist. Und wenn jemand für mehrere Tage oder Wochen krankgeschrieben ist, musst du das jeden Tag aufs Neue eintragen.

Für die Erfassung der Krankheitstage habe ich ein separates Formular entwickelt

Das verstehe ich nicht: Wo werden diese Eingaben denn gespeichert? In einer separaten Tabelle? Dann müssten einfach die beiden Tabellen mal vernünftig normalisiert werden, sonst verstößt das gegen die zweite Normalform. Wenn du das richtig machst, löst sich dein Problem in Wohlgefallen auf.

Martin

Tabelle soll automatisch gefüllt werden

RalfM, Donnerstag, 29.08.2019, 21:35 (vor 19 Tagen) @ Martin Asal

Hallo Martin,

ich habe mich vielleicht etwas undeutlich ausgedrückt.
Also:
Ich habe eine Stammtabelle in der alle Mitarbeiter aufgeführt sind gemeinsam mit 2 Abfragefeldern "Anwesend" und "Krank"
(Wenn jemand krank ist, wird er zwar nicht zur Arbeit erscheinen, aber es kann wohl vorkommen, dass jemand der nicht krank ist, einfach nicht erscheint)
Für diese Stammtabelle gibt es dann ein Formular in dem morgens einfach abgehakt werden soll, wer alles anwesend ist (Feld "Anwesend")
Bei den Mitarbeitern, die krank gemeldet sind, soll in dem Formular automatisch das Kontrollkästchen "Krank" gesetzt sein.
Da dieses Formular täglich geöffnet wird, habe ich eine Abfrage für die tägliche Krankheit.
Jetzt brauche ich halt eine Aktionsabfrage oder ähnliches mit dem in der Stammtabelle nur bei den heute krankgemeldeten Mitarbeitern das Feld "Krank" auf JA gesetzt wird.

Ich habe also die Tabelle (TAB1) mit dem Primärschlüssel "Pers_Nr" und diversen anderen Feldern und ein Formular das alle heute kranken Mitarbeiter anzeigt.(Formular resultiert aus der entsprechenden Abfrage)
Nun möchte ich in dem Formular eine Schaltfläche einführen, mit der die Datenübernahme gestartet wird.
Ich habe dazu folgendes gefunden, was aber nicht funktioniert:

update TAB1 set Krank= 'Ja' where Pers_Nr = & me!Pers_Nr

Diese WHERE-Anweisung funktioniert aber nicht - entweder habe ich Syntax-Fehler oder es fehlen Argumente.
Wenn ich das WHERE weglasse, dann wird bei jedem Mitarbeiter das Krank-Feld gefüllt, was aber nicht sinnvoll ist.
Wie muss ich denn das schreiben?

Tabelle soll automatisch gefüllt werden

Martin Asal @, Freitag, 30.08.2019, 11:06 (vor 19 Tagen) @ RalfM

ich habe mich vielleicht etwas undeutlich ausgedrückt.

Möglicherweise. Bei dir kommen nämlich vielleicht die Begriffe "Tabelle" und "Formular" durcheinander - nach wie vor. Deswegen von mir nochmal der Hinweis, wie es wohl sinnvoll wäre:

Wenn jemand krank ist, kommt zumeist eine Krankmeldung (der "gelbe Zettel" vom Arzt) für mehrere Tage oder gar Wochen. Ich halte es für absurd, eine Krankmeldung jeden Tag erneut einzugeben. Außerdem wäre es bestimmt sinnvoll, auch mal rückwirkend nach Krankheitstage schauen zu können. Deswegen würde ich nicht mit einer, sondern zwei Tabellen arbeiten: Aus deiner bisherigen Tabelle fliegt das Feld "Krank" raus. Statt dessen kommt eine neue Tabelle für Krankmeldungen hinzu (nennen wir sie "tblKrank"), mit den Feldern "PersNr" sowie den Datumsfeldern "KrankSeit" und "KrankBis". Zwischen den beiden Tabellen baust du eine 1:n-Beziehung auf. Wenn jemand länger krankgemeldet ist, muss man das nur noch ein einziges Mal eingeben. Und wenn morgens abgehakt wird, werden die krankgemeldeten Personen gar nicht mehr erst aufgeführt, weil das Formular auf einer Abfrage basiert:

SELECT *
FROM TAB1
WHERE Pers_Nr NOT IN 
   (SELECT Pers_Nr
    FROM tblKrank
    WHERE DATE() BETWEEN [KrankVon] AND [KrankBis]
   )
;
 

Martin

Tabelle soll automatisch gefüllt werden

RalfM, Mittwoch, 04.09.2019, 15:06 (vor 13 Tagen) @ Martin Asal

Hallo Martin,

vielen Dank erstmal für Deine Hilfe - ich habe mich einfach auch nur blöd angestellt.
Nachdem ich krampfhaft versucht hatte über den Abfrage bzw. Makro-Assistenten die SQL-Abfrage einzugeben, habe ich den richtigen "Reiter" erwischt.
Jetzt klappt alles so wie es sein soll.

RSS-Feed dieser Diskussion
powered by my little forum