Discussion:
Altersberechnung auf Tag genau
(zu alt für eine Antwort)
Marco Achermann
2003-09-28 08:46:24 UTC
Permalink
Hallo zusammen



Ich habe herausgefunden, wie sich das Eintrittsalter von Patienten aus dem
Geburtsdatum und dem Datum des Erstgesprächs berechnen lässt, so dass des
Alter in der Form Jahr;Monat (Zum Beispiel 16;3)erscheint.
Nämlich: in einem Feld einer Abfrage steht:
Alter in Monaten:
DatDiff("m";[KlientInnendaten]![Geburtsdatum];[KlientInnendaten]![Eintrittsd
atum])

Im nächsten Feld: Alter: Int([Alter in Monaten]/12) & ";" & [Alter in
Monaten]-(Int([Alter in Monaten]/12)*12)



Wie muss ich nunf vorgehen, das in einem neuen Feld, so dass dann das
Resultat z.B. so 16;3;28 aussieht?

vielen Dank



Marco
Volker Sasse
2003-09-28 08:58:37 UTC
Permalink
-----Originalnachricht-----
Hallo zusammen
Ich habe herausgefunden, wie sich das Eintrittsalter von
Patienten aus dem
Geburtsdatum und dem Datum des Erstgesprächs berechnen
lässt, so dass des
Alter in der Form Jahr;Monat (Zum Beispiel 16;3)erscheint.
DatDiff("m";[KlientInnendaten]![Geburtsdatum];
[KlientInnendaten]![Eintrittsd
atum])
Im nächsten Feld: Alter: Int([Alter in Monaten]/12) & ";"
& [Alter in
Monaten]-(Int([Alter in Monaten]/12)*12)
Wie muss ich nunf vorgehen, das in einem neuen Feld, so
dass dann das
Resultat z.B. so 16;3;28 aussieht?
vielen Dank
Marco
Hiho!

Müsste eigentlich mit:
me.neuesfeld=me.jahre & ";" & me.monate & ";" & me.tage
gehen.

Gruß

Volker
____________________
Volker Sasse
Team GIS-Forum
www.gis-forum.info
____________________
Josef Poetzl
2003-09-28 11:57:41 UTC
Permalink
Hallo!
Post by Marco Achermann
Ich habe herausgefunden, wie sich das Eintrittsalter von Patienten aus dem
Geburtsdatum und dem Datum des Erstgesprächs berechnen lässt, so dass des
Alter in der Form Jahr;Monat (Zum Beispiel 16;3)erscheint.
DatDiff("m";[KlientInnendaten]![Geburtsdatum];[KlientInnendaten]![Eintrittsd
atum])
Im nächsten Feld: Alter: Int([Alter in Monaten]/12) & ";" & [Alter in
Monaten]-(Int([Alter in Monaten]/12)*12)
Jezt kommt es aber darauf an, wie genau das ganze sein soll:

Ein Beispiel:

Geburtsdatum: 29.9.2000
Eintrittsdatum: 01.09.2003

Dein Ergebnis: 3/0
Sollte hier nicht stehen: 2/11 ?
Post by Marco Achermann
Wie muss ich nunf vorgehen, das in einem neuen Feld, so dass dann das
Resultat z.B. so 16;3;28 aussieht?
Müssen diese Werte unbedingt in der Abfrage stehen, oder reicht es
aus, wenn Du sie erst im Formular berechnest?

Mögliche Lösung für VBA:
(Nur als Beispiel, musst Du sicherlich noch anpassen)

<code>
Const datWert1 As Date = #9/29/2000# '...Geburtsdatum
Const datWert2 As Date = #9/1/2003# '...Eintrittsdatum

Dim intJahre As Integer
Dim intMonate As Integer
Dim intTage As Integer

intJahre = Year(datWert2) - Year(datWert1)
intMonate = Month(datWert2) - Month(datWert1)
intTage = Day(datWert2) - Day(datWert1)

If intTage < 0 Then
intTage = Day(DateSerial(Year(datWert2), Month(datWert2), 0)) +
intTage
intMonate = intMonate - 1
End If

If intMonate < 0 Then
intMonate = 12 + intMonate
intJahre = intJahre - 1
End If

MsgBox intJahre & ";"; intMonate & ";" & intTage
</code>

mfg
Josef
Karl Donaubauer
2003-09-29 14:17:06 UTC
Permalink
Post by Marco Achermann
Ich habe herausgefunden, wie sich das Eintrittsalter von Patienten aus dem
Geburtsdatum und dem Datum des Erstgesprächs berechnen lässt, so dass des
Alter in der Form Jahr;Monat (Zum Beispiel 16;3)erscheint.
DatDiff("m";[KlientInnendaten]![Geburtsdatum];[KlientInnendaten]![Eintrittsd
atum])
Im nächsten Feld: Alter: Int([Alter in Monaten]/12) & ";" & [Alter in
Monaten]-(Int([Alter in Monaten]/12)*12)
Wie muss ich nunf vorgehen, das in einem neuen Feld, so dass dann das
Resultat z.B. so 16;3;28 aussieht?
Deine Berechnungen sind ungenau.
Eine Variante (auch für Abfragen) findest du in meinem KB-Artikel,
der gelinkt ist in: Access-FAQ 2.7 Alter ermitteln

Statt des Vergleichs mit dem aktuellen Datum (Funktion Datum())
musst du dort den Feldnamen deines Eintrittsdatums verwenden.
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
+ 6. AEK (Access-Entwickler-Konferenz, Nbg., 4./5.10.2003)
Loading...