Jahr-2000-Problem bei Altersberechnung

Auf der Suche nach Access-Tips ist mir Ihr Access-Artikel in der Ausgabe 9/96 in die Hände gefallen. Dort findet sich auf Seite 212 eine Formel für die automatische Altersberechnung mit Access 2.0. Da ich mit Access 97 arbeite, habe ich die folgende Formel übernommen und getestet. Leider werden alle Altersangaben ab 69 Jahre mit einem Alter von -31, -30 oder -29 Jahren berechnet. Ist das ein Versionsproblem?

Nein, es handelt sich nicht um ein Versionsproblem, sondern um einen Vorboten des Jahr-2000-Problems. Access 97 ist bereits auf das Jahr 2000 vorbereitet, doch gibt es dabei bestimmte Konventionen zu beachten. Wenn Sie ein Datum vor 1930 verwenden, ohne das Jahrhundert anzugeben, interpretiert Access etwa die Jahreszahl 29 nicht als 1929, sondern als 2029. Das können Sie im Direktfenster von Access verfolgen. Dazu aktivieren Sie das Datenbank-Fenster mit der Taste [F11] und rufen die Befehle Einfügen – Modul und Ansicht – Testfenster auf. Geben Sie dann im Testfenster die folgenden Befehle ein:

datum = #1 jan 29#
? datum
1.1.2029
datum = #1 jan 30#
? datum
1.1.1930
datum = #1 jan 1929#
? datum
1.1.1929
Wie das Beispiel zeigt, legt Access alle Jahreszahlen von 0 bis 29 in das nächste Jahrtausend von 2000 bis 2029. Das Ganze nennt sich Windowing und ist eine einfache Methode für die Lösung des Jahr-2000-Problems. Wer heute 69 Jahre alt ist, wurde vor 1929 geboren. Wenn Sie kein Jahrhundert angeben, berechnet Access nicht 98 minus 29, sondern 1998 minus 2029, also –31 Jahre. Solche Berechnungsprobleme, die im Zusammenhang mit dem Jahr 2000 auftreten, können Sie durch vierstellige Datumsangaben leicht vermeiden.
Falls Ihr Formular-Layout nur zweistellige Jahreszahlen aufnimmt, können Sie bei der Ausgabe des Datums das Format Datum, kurz mit zwei Jahreszahlen verwenden. Um die Eingabe zweistelliger Datumsangaben zu unterbinden, sollten Sie Datumsfelder mit Eingabemasken versehen.
Dazu öffnen Sie die entsprechenden Tabellen im Entwurfsmodus und definieren im Datumsfeld 99.99.0000;0 als Eingabemaske. Diese Maske verlangt mit dem Platzhalter 9 nach Zahlen für die Eingabe von Tag und Monat und erzwingt dann die Eingabe einer vierstelligen Jahreszahl.