Februar 27, 2021, 17:07:43

Neuigkeiten:

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


Mit berechneter Funktion im Formular weiter rechnen

Begonnen von Magix1977, Februar 16, 2021, 07:46:21

⏪ vorheriges - nächstes ⏩

Magix1977

Hallo,

bin mal wieder am Verzweifeln, und hoffe es hat hier jemand eine Lösung für mich. Ich hänge die Datenbank mal mit ein.

Im Formular Anspruch_F hängt das Unterformular "Urlaub_UF" in diesem sind die einzelnen Urlaubsanträge erfasst, pro Zeile ein Urlaub mit von-bis Datum und Urlaubstyp. Die Tage (grau hinterlegt) werden anhand einer Funktion berechnet, da automatisch Wochenenden und Feiertage abgezogen werden. Soweit klappt dass auch.

Nun möchte ich oben in der grünen Zeile die Übersicht haben, wieviel Urlaubstage noch verplant werden können, also unter "Nicht verplant". Ich habe mir in die Formularfuß die Felder nochmals angelegt und wollte da jetzt berechnen, allerdings kann ich machen, was ich will. Entweder ich bin bekomme einen Fehler oder einen #Typ-Fehler.

Ich möchte gern folgendes darstellen: Urlaubsanspruch+Resturlaub-Tage (also Summe alle Zeilen im Endlosformular zu dem Datensatz aus dem Hauptformular), damit man sehen kann, wieviel Tage noch verplant werden müssen/können.

Habt Ihr da eine Idee? Ich bin über jede Hilfe echt Dankbar, muss das Ding diese Woche zum Fliegen bringen :( - die Abfrage Offene Tage pro Mitarbeiter kann es ja auch berechnen, aber das Formular irgendwie nicht.

Danke für Eure Unterstützung.

Gruß

BecksK1974

andyfau

Hallo,

Du kannst im Fuß ein Zwischenfeld einbauen und auf unsichtbar stellen und dann mit diesem Feld rechnen.Sie dürfen in diesem Board keine Dateianhänge sehen.

MzKlMu

Februar 16, 2021, 11:29:52 #2 Letzte Bearbeitung: Februar 16, 2021, 12:04:27 von MzKlMu
Hallo,
Du ziehst ja in Deiner Formel Feld79 ab und das ist ja das Feld selbst. Du musst Feld87 abziehen, dann klappt das auch.
=[Urlaubsanspruch]+[Resturlaub]-[Text87]
PS:
Wenn Du Deine Felder vernüftig benennen würdest (Text87 => SummeTage), würde so etwas eher auffallen, als mit diesen nichtssagenden Namen.

Da gibt es aber noch einige weitere Ungereimtheiten.
Dieser Code:
Private Sub Funktion_AfterUpdate()
Me!Tage = Me!Funktion
End Sub
wird nie ausgeführt, da das ein berechnetes Feld ist und somit das Ereiegnis "Nach Aktualisierung" nicht eintritt.
Die Berechnung gehört auch in die Abfrage und das Tabellenfeld Tage kannst Du ersatzlos löschen, denn das wird ja berechnet.
Im Formular kannst Du dann direkt das berechnete Feld Tage verwenden, das dann die korrekte Summe bilden kann. In Deiner DB stimmt das ja nicht, wenn Du zum nächsten Datensatz blätterst.

Wieso verwendest Du für die offenen Tage/Mitarbeiter den Mittelwert?

Für die Berechnung der Tage verwendet man eine Kalendertabelle in die dann auch Brückentage oder sonstige betriebliche Freitage einfließen können.
Die feiertageberechnung legt dann einmalig in der Kalendertabelle die Feiertage an. Das kann man für 10 oder mehr Jahre im Voraus machen.

Geänderte DB (ohne Kalendertabelle) anbei, auch das mit dem eigenartigen Mittelwert ist noch drin.

@andreas
Da braucht man doch kein Zwischenfeld, das sich ja auch nur auf Feld87 bezieht.
Gruß
Klaus

andyfau


ebs17

Zitatdie Abfrage Offene Tage pro Mitarbeiter kann es ja auch berechnen, aber das Formular irgendwie nicht
...
Habt Ihr da eine Idee?
Die logische Fortsetzung Deines ersten Satzes wäre mein primärer Ansatz: In einer Abfrage wird gerechnet, das Formular zeigt dann "nur" das Ergebnis an.
Da eine Auswahlabfrage eine virtuelle Tabelle, also quasi ein Tabelle ist, lässt sie sich zudem verschiedenartig einsetzen und auswerten, losgelöst von Formularabhängigkeiten, einem gerade aktuellen Datensatz und -wert (Me.Text299), also entspannt und fehlerarm.

Also ermittle die zu gebenden Urlaubstage pro Mitarbeiter im gewünschten Jahr in einer Abfrage.
Ermittle die schon gegebenen Urlaubstage und die geplanten Urlaubstage pro MA und gewünschtem Jahr.
Diese beiden Abfragen kann man über die beiden genannten Schlüssel zusammenbringen und somit die Differenz berechnen.
Danach machst Du Dir Gedanken, wie man das Ergebnis geeignet in einem Formular darstellt.
Mit freundlichem Glück Auf!

Eberhard

Magix1977

Ich danke Euch allen - das war es ... werd versuchen in Zukunft auf die Benamsung zu achten ... das Buch geht nicht näher darauf ein und ich hangel mich damit durch :)

MzKlMu

Hallo,
und zu den Ungereimtheiten und sonstigen Anmerkungen hast Du nichts zu sagen?
Das sind ja immerhin Fehler.
Gruß
Klaus