Neuigkeiten:

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

Mobiles Hauptmenü

Anzahld der Tage bei zwei Datumsfeldern auslesen

Begonnen von GuidoK, Juli 16, 2017, 11:17:01

⏪ vorheriges - nächstes ⏩

GuidoK

Hallo Experten,

ich stehe vor folgendem Problem:
In meiner Fortbildungsdatenbank habe ich dieTabelle "T_TNBeschAusmass_gueltigkeit" mit folgenden Feldern:
ID_TNBA_gueltigkeit (Autowert)
ID_TNNr (Nachschlagfeld zur Tabelle "T_Teilnehmer)
BeschAusmassStunden (Zahl Long Integer)
gueltig_von (Datumsfomat kurz 01.01.2016)
gueltig_bis(Datumsformat kurz 01.01.2016)

Die Tabelle T_MLVNr mit den Feldern:
ID_MLVNr (Autowert)
MLVNr (Textfeld)
MLV_Beschreibung (Textfeld)
SU_Kontingent (Zahl Long Integer)

Und hier nun mein Problem:
In der Tabelle "T_TNBeschAusmass_gueltigkeit" werden die Zeiträume je Teilnehmer gespeichert für den das Beschäftigungsausmaß des Teilnehmers gültig ist.
Dies kann z.B sein:
Teilnehmer 1
20 Stunden vom 1.1.1985 bis 31.12.9999

Teilnehmer 2
30 Stunden vom 1.5.2015 bis 28.2.2017
20 Stunden vom 1.3.2017 bis 15.7.2017
40 Stunden vom 16.7.2017 bis 31.10.2017 (Hier scheidet der Mitarbeiter aus)

Teilnehmer 3
40 Stunden vom 1.2.2017 bis 31.5.2017
30 Stunden vom 1.6.2017 bis 31.12.9999

Jeder Teilnehmer hat auf Grund seiner Beschäftigungsgruppe (MLVNr) ein Sonderurlaubskontingent pro Jahr, das abhängig von seinem Beschäftigungsaumaß und der Dauer des Beschäftigungsausmaßes im aktuellen Kalenderjahr ist.

Wie kann ich aus den oben angeführten Zeiträumen ermitteln wieviele Tage je Beschäftigungsausmaß bei jedem Teilnehmer in das aktuelle Kalenderjahr fallen?

LG Guido



Lachtaube

Nimm das Ende des zu untersuchenden Jahres, vergleiche es mit dem Enddatum und verwende den keineren Wert. Nimm den Anfang des zu untersuchenden Jahres, vergleiche mit dem Startdatum und verwende den größeren Wert.Ein Beispiel aus dem VBA-Direktbereich verdeutlicht das.
a = #2016-11-01#
e = #2018-03-31#
da = DateSerial(Year(Date()), 1, 1)
de = DateSerial(Year(Date()), 12, 31)
?IIf(de > e, e, de) - IIf(da > a, da, a) + 1
365
e = #2017-10-31#
?IIf(de > e, e, de) - IIf(da > a, da, a) + 1
304
e = #2018-03-31#
a = #2017-02-01#
?IIf(de > e, e, de) - IIf(da > a, da, a) + 1
334
e = #2017-10-31#
?IIf(de > e, e, de) - IIf(da > a, da, a) + 1
273
Grüße von der (⌒▽⌒)

GuidoK