Neuigkeiten:

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

Mobiles Hauptmenü

Hilfe bei meiner Abwesenheitsliste

Begonnen von KevSchechner, Oktober 09, 2014, 10:04:37

⏪ vorheriges - nächstes ⏩

KevSchechner

Hi,

ich brauch mal eure Hilfe,

ich hatte auch schon ein Beitrag geöffnet mit dem Namen Flexgrid/Datagrid.
Prizipell würde da auch meine fragen alle gelöst nur ich komm einfach nicht weiter.

Ich bin immoment so weit, das ich im Formular ein Datum + eine Tag zahl eingebe, er mir alle in dem Zeitraum befinlichen Abwesenheiten in eine Tabelle schreibt.

Nur jetzt kommt mein problem.

ich möchte das gerne in einem Formular wieder spiegeln.

es sollte so aussehen

Mitarbeiter | Sicht | Datum anfang (zb. 10.10.2014) | 11.10.2014| 12.10.2014| ....... | 24.10.2014
Hans blub  |    A   |  F                                          |  K            | K              | ........| U
.....

F = Freischicht
K = Krank
U = Urlaub
wenn es leer ist ist der Mitarbeiter anwesend.

im Anhang findet ihr meine bisheriges Werk.

höffe ihr könnt mir weiter helfen.

mfg Kev


MaggieMay

Hallo,

ein Anhang ist nicht vorhanden, wenn die Datei zu groß ist, versuche es mit Komprimieren (-> Datenbanktools) vor dem Zippen.
Freundliche Grüße
MaggieMay

KevSchechner

ohh verdammt :) mein fehler habs einfach vergessen :D

MaggieMay

Hallo,

ich hätte dazu folgende Vorschläge für dich:

1. Abfrage "qry_Abwesenheiten" ermittelt die einzelnen AbwesenheitstageSELECT Abwesenheit.MaID, Abwesenheit.StatusID, Abwesenheit.Anfang, Abwesenheit.Anzahl, tblKalendertage.Datum
FROM Abwesenheit, tblKalendertage
Where tblKalendertage.Datum >= Abwesenheit.Anfang AND tblKalendertage.Datum < Abwesenheit.Anfang + Abwesenheit.Anzahl;


2. Abfrage "qry_ZeitenUebersicht" führt die Mitarbeiter mit den Abwesenheiten zusammen und fügt weitere Detailinformationen wie Namen, Statusbezeichnung und Schicht hinzuSELECT Mitarbeiter.MitarbeiterID, Mitarbeiter.Vorname, Mitarbeiter.Nachname, Mitarbeiter.SchichtID, qry_Abwesenheiten.Datum, qry_Abwesenheiten.StatusID, Status.KurzForm
FROM (Mitarbeiter LEFT JOIN qry_Abwesenheiten ON qry_Abwesenheiten.MaID = Mitarbeiter.MitarbeiterID) LEFT JOIN Status ON qry_Abwesenheiten.StatusID = Status.StatusID;


3. Abfrage "qry_MA_Anw_Kreuztabelle" zeigt beispielhaft eine Übersicht eines bestimmten ZeitraumsTRANSFORM First(qry_ZeitenUebersicht.[KurzForm]) AS ErsterWertvonKurzForm
SELECT qry_ZeitenUebersicht.[MitarbeiterID], qry_ZeitenUebersicht.[Vorname], qry_ZeitenUebersicht.[Nachname], qry_ZeitenUebersicht.SchichtID, First(qry_ZeitenUebersicht.[KurzForm]) AS [Gesamtsumme von KurzForm]
FROM qry_ZeitenUebersicht
GROUP BY qry_ZeitenUebersicht.[MitarbeiterID], qry_ZeitenUebersicht.[Vorname], qry_ZeitenUebersicht.[Nachname], qry_ZeitenUebersicht.SchichtID
PIVOT Format([Datum],"Short Date") IN ("01.10.2014","02.10.2014","03.10.2014","04.10.2014","05.10.2014");


Bei der Kreuztabellenabfrage wäre also letztendlich anzusetzen, um den gewünschten Auswertungs-Zeitraum zur Ansicht zu bringen. Hierzu müsste der SQL-Code per VBA dynamisch erstellt werden, indem die in der Liste für die fixierten Spaltenüberschriften vorzugebenden Datumsangaben aus den Formulareingaben "Startdatum" und "Anzahl Tage" generiert werden.

Ich hoffe, das hilft dir weiter.

BTW:
Auf die Verwendung reservierter Worte wie "Datum" und "Anzahl" sollte grundsätzlich verzichtet werden.
Freundliche Grüße
MaggieMay

KevSchechner

Hallo,

vielen vielen Dank für deine Hilfe erstmal.

Ich hab mir dein Rat zu Herzen genommen und hab die Wörter umbenannt.

ich wollte gerade auch mal einen kurzen einblick geben wie weit ich jetzt bin.

Also ich hab jetzt eigentlich alles soweit "fertig".

hab jetzt ein Formular in dem ich angeben, von welchen zeitraum ich gerne die Auswertung hätte.

Wenn ich dann auf den Button klick, zeigt er bei der Kreuztabelle alles Korreckt an.

Was ich noch machen müsst, ist eine Formluar um die Abwesenheit einzutragen.(Mach ich zum Schluß)

jetzt hab ich nur noch die Frage, wie kann ich das gescheit dastellen?

mfg Schechner

KevSchechner

ich hab es jetzt fast soweit ( bis eine schöne darstellung)

wenn man im Formular jezt 02/10/2014 + 10 Tage und auf den Button drückt.
Zeigt er mir die gewünschte tabelle an.

Jetzt muss ich "nur" noch die werte in eine flexible ansicht bringen.

mfg Schechner

MaggieMay

Hallo,

ich bin immer noch ziemlich sprachlos angesichts des Overheads an Code den du da produziert hast. Eine einfache Parameterabfrage zur Auswahl des Zeitraums als Basis für weitere Auswertungen sollte genügen, da braucht man nicht bei jedem Lauf zig Abfragen zu generieren und auch keine Tabelle zu erstellen. Dafür kann man notfalls eine Tabellenerstellungsabfrage einsetzen, was aber gar nicht erforderlich sein sollte. Das einzige was es zu codieren lohnte, wären fixierte Spaltenüberschriften für die Kreuztabellenabfrage.

Beim Test steigt steigt die Prozedur übrigens beim Anlegen der Datumsfelder aus, ein Feldname darf keine Punkte enthalten.
Wie hast denn du diese Klippe umschifft??  ???
Freundliche Grüße
MaggieMay

KevSchechner

Hi,

ja das mag sein das ich zu viel hab :D ( kann man ja noch optimieren :D)
ist alles durch mehrere steps enstanden, bis es gepasst hat :D

ohh gut das es getestet wurde, ich hab standart mäßig das Englische Format, also / anstatt . :)

das müsste ich ändern

MaggieMay

Hi,

ich habe dir das mal so zusammengestellt, wie ich mir das vorgestellt hatte.

Zur Anzeige würde man dann besser noch ein Formular einsetzen, d.h. dazu bräuchte man auch wieder ein bißchen Code, um die Feldnamen und Beschriftungen anzupassen. Aber das solltest du dann wohl selbst hinkriegen.
Freundliche Grüße
MaggieMay

KevSchechner

#9
vielen Dank für deine Hilfe, sieht sehr gut aus.


hab aber dennnoch 3 fragen  ::)

1. Wie kann ich jetzt noch den Schichtplan mit einpflegen? überall wo ein X ist, ham die leute auch frei
2. so einfach wie du das schreibst mit dem Formular geht das nicht oder? also ich habs mal probiert, scheiter aber immer am Dynamischen Datum
3. ist es möglich eine Jahresansicht einzubauen?

wäre cool wenn ich da noch hilfe bekommen könnte, ich probier zwar mein glück aber .... :/


mfg Schechner