Hey
Zum x-ten Mal ein Beitrag zur Berechnung des Datums. Ich habe eine Tabelle Verträge. In dieser sind u.a. zwei Spalten: Eintritt und Monate im Unternehmen. Im Formular habe ich für Eintritt Ereignis beim Klicken folgenden Ausdruck eingefügt:
=Wenn(Jahr(Datum())-Jahr([Eintritt])=0;Monat(Datum())-Monat([Eintritt]);Wenn(Datum()<[Eintritt];0;Monat(Datum())))
Wo ist der Fehler im Code ??? Ich habe es schon mit mehreren Versionen versucht, aber immer erscheinen Fehlermeldungen...
Kann mir bitte jemand helfen? - Danke! ;)
Hallo,
wenn Du jetzt noch sagen würdest, was Du berechnen willst, könnte man ja möglicherweise helfen, ;D
Und ist Eintritt ein vollständiges Datum?
Hey
Okay, dann ausführlich ;D
Eintritt ist ein "normales" kurzes Datumsfeld. Ich möchte ermitteln, wie lange ein Mitarbeiter im Unternehmen ist (nur die Monate). Wenn Eintrittsjahr=Aktuelles Jahr, dann Aktueller Monat - Eintrittsmonat (Eintritt: August, AktuellerMonat: November, Monate:4).
Wenn das Eintrittsjahr in der Vergangenheit liegt, ist es der aktuelle Monat (Juli: 7 Monate im Unternehmen).
Kannst du den Fehler sehen? :D
Hallo das hier sollte eine taggenaue Lösung in einer Abfrage sein:
Wenn(Tag(Jetzt())>Tag([Personaldaten]![Testdatu,]);(Jahr(Jetzt())-Jahr([Personaldaten]![Testdatu,]))*12+(Monat(Jetzt())-Monat([Personaldaten]![Testdatu,]));(Jahr(Jetzt())-Jahr([Personaldaten]![Testdatu,]))*12+(Monat(Jetzt())-Monat([Personaldaten]![Testdatu,]))-1)
Hallo,
@Username
Deine Formel ist ungeeignet. Für Datumsdifferenzen hat Access eigene Funktionen.
Außerdem solltest Du in einer Abfrage berechnen. Das Tabellenfeld für die Monate ist überflüssig und kannst Du in der Tabelle ersatzlos löschen.
MonateImUnternehmen: DatDiff("m";[Eintritt];Datum())
Als Eintrag in der 1.Zeile einer leeren Spalte.
@Harsefeld
Für eine tagegenaue Lösung kannst Du obige Formel auch verwenden:
TageImUnternehmen: DatDiff("d";[Eintritt];Datum())
Eventuell statt d ein t verwenden.
Hallo @ MzKLMu
deine Lösung ist definitiv kürzer als meine ,) .
Hey
Klasse Leute, danke! So schnelle Antworten :)
Mit den Monaten muss ich später noch rechnen, also lieber doch hinterlegen? Der Anteil am Umsatz des Unternehmens richtet sich nach den gearbeiteten Monaten im Unternehmen und dafür benötige ich später von jedem Mitarbeiter die Monate.
Wahrscheinlich noch ein kleiner Verständnisfehler: Die Anzahl der Monate darf 12 nicht überschreiten. Mit der Funktion MonateImUnternehmen: DatDiff("m";[Eintritt];Datum())
würde er doch endlos die Monate zählen, oder nicht?
Wenn ein Mitarbeiter im August anfängt, arbeitet er in diesem Jahr noch 4 Monate im Unternehmen. Im nächsten Jahr arbeitet er bis zu 12 Monate im Unternehmen. Da die Umsatzzahlen jederzeit generiert werden können müssen, brauche ich immer die Anzahl der Monate, die der MA aktuell im in diesem Jahr im Unternehmen arbeitet.
Danke!
Hallo,
Zitatalso lieber doch hinterlegen?
nein, auf keinen Fall. Du kannst auch mit der Formel rechnen. Der Wert für die Monate ist ja vom Eintritt abhängig und somit muss auch ein gespeicherter Tabellenwert immer neu gerechnet werden, denn im nächsten Monat ist es ja ein Monat mehr, wozu dann in der Tabelle speichern?
Zitat von: MzKlMu am Juli 29, 2013, 09:51:53
Hallo,
Zitatalso lieber doch hinterlegen?
nein, auf keinen Fall. Du kannst auch mit der Formel rechnen. Der Wert für die Monate ist ja vom Eintritt abhängig und somit muss auch ein gespeicherter Tabellenwert immer neu gerechnet werden, denn im nächsten Monat ist es ja ein Monat mehr, wozu dann in der Tabelle speichern?
::) hätte ich auch drauf kommen können :D
Danke
Hallo,
kannst Du bitte mal die Berechnungsmodalitäten genauer erläutern?
Willst Du die Monate bis zum aktuellen Datum?
Oder die Monate bis zum Jahresende?
Vom Jahresanfang bis zum aktuellen Datum bzw. wenn das Jahr dasselbe ist vom Eintrittsdatum bis zum aktuellen Datum.
=>Eintritt: 01.08.2012, Datum: 20.12.2012, MonateiU:4
=>Eintritt: 01.08.2012, Datum: 12.10.2013, MonateiU: 10
;)
Die Lösung von MzKlMu war ja prinzipiell richtig, aber leider nicht ganz auf mein Problem zugeschnitten. Hat noch jemand eine Idee, wie ich das berechnen kann?
Noch einmal definiert: Ich möchte die Monate seit dem Eintritt bis zum aktuellen Datum gezählt haben. Wenn das aktuelle Jahr größer als das Eintrittsjahr ist, brauche ich nur die Anzahl der Monate des aktuellen Jahres.
Heißt: Im 1.Vertragsjahr Monate im unternehmen <=12, in den Folgejahren =12.
Danke für eure Hilfe!
LG
Hallo,
wenn ich es richtig verstanden habe, sollte das so passen:
MonateImUnternehmen: Wenn(Jahr(Datum())=Jahr([Eintritt]);DatDiff("m";[Eintritt];Datum());DatDiff("m";DatSeriell(Jahr(Datum());1;1);Datum()))
Klasse! Vielen vielen Dank!
Ich habe den Code nur noch etwas ergänzt, da er einen Monat zu wenig ausgibt.
=Wenn(Jahr(Datum())=Jahr([Eintritt]);DatDiff("m";[Eintritt];Datum())+1;DatDiff("m";DatSeriell(Jahr(Datum());1;1);Datum())+1)
Hallo,
Zitatda er einen Monat zu wenig ausgibt.
das möchte ich bezweifeln. Mein Vorschlag ermittelt die
vollen Monate zwischen 2 Datumswerten.