Auswahl von Kunden nach ihrem LebensalterIch verwalte meinen Kundenstamm mit Access. Unter anderem habe ich auch die Geburtsdaten meiner Kunden gespeichert. Mich interessiert dabei nicht so sehr das genaue Geburtsdatum, sondern das Alter. Bis jetzt habe ich immer per Kopfrechnen das ungefähre Alter überschlagen, aber es gibt doch sicher in Access die Möglichkeit, das Lebensalter automatisch auszurechnen. Am liebsten wäre mir eine Lösung, bei der ich vor dem Aufruf einer Abfrage oder eines Berichts die Anzeige auf bestimmte Kunden beschränken könnte, so daß Access mir zum Beispiel nur alle Kunden zwischen 40 und 60 Jahren anzeigt. Mit Hilfe von berechneten Feldern und der Datumsfunktionen von Access können Sie tatsächlich das Lebensalter dynamisch berechnen und dann in Abfragen und Berichten wie ein normales Tabellenfeld verwenden. In solche Felder können Sie allerdings keine Werte eingeben. Berechnete Felder erhalten Sie, wenn Sie in der Entwurfsansicht einer Abfragein einer leeren Spalte einen beliebigen Feldnamen und die Berechnungsvorschrift, getrennt durch einen Doppelpunkt, von Hand eintragen. Wenn Sie sich dabei auf andere Felder der Tabelle beziehen, schreiben Sie die Namen dieser Felder in eckige Klammern. Um zum Beispiel auseinem in der Tabelle gespeicherten Nettopreis den Bruttopreis zu errechnen, schreiben Sie Bruttopreis: [Nettopreis]*1,15. Beim Umschalten in die Datenblattansicht sehen Sie dann die zusätzliche Spalte Bruttopreis, die Access bei einer Änderung des Nettopreises automatisch neu berechnet. Die Formel zum Berechnen des Lebensalters ist etwas komplizierter, in Worten läßt sie sich etwa so umschreiben: "Das Alter einer Person ergibt sich durch die Subtraktion des Geburtsjahres von der aktuellen Jahreszahl, zum Beispiel 1996-1961=35 Jahre. Wenn die Person in diesem Jahr noch nicht Geburtstag hatte, dann ziehe ein Jahr ab." Zum Ausdrücken dieser Formel in Access sind außer der Funktion Wenn () noch einige Datumsfunktionen nötig: Datum() liefert das Systemdatum (also das jeweils aktuelle Datum), DatSeriell (Jahreszahl; Monatszahl; Tageszahl) erzeugt aus drei Zahlenangaben einen Datumswert, und die drei Funktionen Jahr (Datumswert), Monat (Datumswert) und Tag (Datumswert) liefern umgekehrt zueinem Datumswert die jeweiligen Zahlenangaben.Mit Hilfe dieser Funktionen läßt sich nun die genaue Formel aufstellen. Unter der Voraussetzung, daß der jeweilige Geburtstag im TabellenfeldGeburtsdatum gespeichert ist, lautet sie:Wenn(DatSeriell(Jahr(Datum());Monat([Geburtsdatum]);Tag([Geburtsdatum]))<=Datum();Jahr(Datum())-Jahr([Geburtsdatum]);Jahr(Datum())-Jahr([Geburtsdatum])-1). Um also in einer Abfrage ein berechnetes Feld Alter zu erhalten, tragen Sie in eine leere Spalte den Text Alter: gefolgt von obiger Formel ein. Mit [Shift]+[F2] erhalten Sie übrigens das Zoom-Fenster, in dem Sie auch längere Ausdrücke überblicken können. Achten Sie genau auf die Klammer- und Zeichensetzung, sonst erhalten Sie Fehlermeldungen. Wenn alles korrekt ist, sehen Sie nun in der Datenblattansicht für jede Person dasgenaue Lebensalter.Ein berechnetes Feld können Sie nun wie jedes andere Feld mit Kriterien versehen. Zum Beispiel könnten Sie als Kriterium <=65 eintragen, um nur die Personen anzuzeigen, die 65 Jahre oder jünger sind. Da Sie dieKriterien aber dynamisch festlegen wollen, empfiehlt es sich, mit Parameter-Anfragen zu arbeiten: Parameter sind Werte für Kriterien, die derBenutzer vor der Anzeige der Datenblattansicht eingeben muß. Dazu tragen Sie in das entsprechende Kriteriumsfeld statt einer Zahl (wie die oben als Beispiel verwendete 65) einen beliebigen Text in eckigen Klammern ein, zum Beispiel [Bitte Altersgrenze eingeben]. Dieser Text erscheint dann vor der Ausführung der Abfrage in einem kleinen Formular mit dem Titel Parameterwerte eingeben als Eingabeaufforderung. Durch Eintippen entsprechender Zahlenwerte ändern Sie nun bei jedem Aufrufder Abfrage schnell und bequem das Kriterium. Für Ihre Problemstellung bietet sich als Kriterium für die Altersspalte ein mit dem Zwischen-Operator gebildeter Ausdruck an, der Sie einen Altersbereich angeben läßt:Zwischen [Bitte geben Sie die untere Altersgrenze ein] Und [Bitte geben Sie die obere Altersgrenze ein]. Die Funktion verwendet die von Ihnen eingegebenen Zahlen als Kriterium, und Sie erhalten nur die Personen des von Ihnen gewünschten Altersbereichs. Sie sehen an diesem Ausdruck, daß auch mehrere Parameter pro Kriterium erlaubt sind. Das Verteilen der Parameter auf verschiedene Kriteriumsfelder ist in Access ebenso möglich. Die Reihenfolge bei der Anzeige mehrerer Eingabeaufforderungen bestimmen die einzelnen Kriteriumszeilen. Innerhalb einer Zeile hält sich Access einfach an die Abfragereihenfolge von links nach rechts.Zur Anzeige des Alters in Berichten legen Sie am einfachsten einenneuen Bericht an, der auf einer so definierten Parameterabfrage basiert. Das berechnete Feld Alter behandeln Sie dann wie jedes andere Tabellenfeld, auch die Abfrage der Altersgrenzen erscheint vor der Anzeige des Berichts. In einen bereits vorhandenen Bericht (der zum Beispiel direkt auf derKundentabelle basiert) fügen Sie die Anzeige des Alters ein, indem Sieein neues Textfeld erzeugen und als Steuerelementinhalt ein Gleichheitszeichen gefolgt von der obigen Formel eintragen. |