Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2009.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Fügen Sie praktische Funktionen zu Datumsfeldern hinzu.

Techniken

Formulare, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

Datumstextfeld.mdb

Shortlink

690

Flexible Datumstextfelder

André Minhorst, Duisburg

Bis Access 2003 wiesen Textfelder, die an Datumsfelder gebunden waren, überhaupt keine besonderen Eigenschaften auf. Mit Access 2007 änderte sich dies: Immerhin erscheint hier ein Kalender-Symbol neben dem Textfeld, wenn dieses den Fokus hat, und bietet eine Hilfe für die schnelle Datumsauswahl an. Mit der Lösung aus diesem Beitrag statten Sie Datumstextfelder aller Access-Versionen seit 2000 mit weiteren nützlichen Features aus.

Beispieldatenbank

Die Beispieltabelle zu diesem Beitrag tblDatum enthält schlicht zwei Felder: DatumID dient als Primärschlüssel und Beispieldatum enthält das Feld, an das wir gleich das Datumstextfeld des Beispielformulars binden. Dieses Formular heißt frmDatum und ist über die Eigenschaft Datenherkunft an die Tabelle tblDatum gebunden. Im Detailbereich zeigt es die beiden einzigen Felder dieser Tabelle an (s. Abb. 1).

pic001.png

Abb. 1: Entwurfsansicht des Beispielformulars zur Eingabe von Datumsangaben

Vereinfachungen für die Datumseingabe

Wir schauen uns im Rahmen dieses Beitrags drei kleine Hilfen für die einfache Datumseingabe an:

  • Eingabe des aktuellen Datums per Leertaste
  • Ändern eines Datumselements mit der Nach oben-Taste
  • Ändern eines Datumselements mit der Nach unten-Taste

Die Funktion, die wir mit der Leertaste abbilden möchten, ist eigentlich bereits in Access eingebaut: Sie brauchen einfach nur die Tastenkombination Strg + Umschalt + Komma (,) zu betätigen, schon fügt Access das Datum in das aktuelle Steuerelement ein. Für die Uhrzeit erreichen Sie dies übrigens mit Strg + Umschalt + Punkt (.). Beide Tastenkombinationen sind, das erkennt auch der Laie schnell, nur schwer zu merken, wenn man nicht täglich damit arbeitet.

Aktuelles Datum per Leerzeile

Also verwenden wir einfach die Leertaste als Tastenkombination für die Eingabe des aktuellen Datums. Dies können wir uns erlauben, denn in einer Datumsangabe hat ein Leerzeichen natürlich nichts zu suchen.

Tasteneingaben fangen wir generell mit den KeyDown- und KeyUp-Methoden von Formularen und Steuerelementen ab. Wann welches dieser Ereignisse ausgelöst wird, finden Sie am einfachsten heraus, indem Sie die folgenden beiden Ereignisprozeduren für die entsprechenden Ereigniseigenschaften des Textfelds Beispieldatum hinterlegen:

Private Sub Beispieldatum_KeyDown(KeyCode _

    As Integer, Shift As Integer)

    Debug.Print "KeyDown", KeyCode, Shift

    End Sub

Private Sub Beispieldatum_KeyUp(KeyCode _

    As Integer, Shift As Integer)

    Debug.Print "KeyUp", KeyCode, Shift

    End Sub

Nun platzieren Sie das Access-Fenster so über (oder auch neben) das VBA-Fenster, dass der Direktbereich des VBA-Fensters sichtbar ist. Wenn Sie den Fokus auf das Textfeld Beispieldatum legen und Zeichen mit der Tastatur eingeben, sehen Sie nicht nur, wann welches Ereignis ausgelöst wird, sondern auch, welche Werte die Parameter Keycode und Shift dieser Prozeduren liefern - die Leertaste entspricht beispielsweise dem KeyCode 32. Auf diese Weise erkennen wir außerdem, zu welchem Zeitpunkt ein Zeichen im Textfeld erscheint, nämlich nach dem Herunterdrücken der betroffenen Taste.

Dies nutzen wir aus, um bei Betätigung der Leertaste das aktuelle Datum einzufügen, und zwar durch folgende Änderung der Ereignisprozedur Beispieldatum_KeyDown:

Private Sub Beispieldatum_KeyDown(KeyCode _

    As Integer, Shift As Integer)

    Select Case KeyCode

    Case 32

    Me!Beispieldatum = Date

    KeyCode = 0

    Case Else

    Debug.Print KeyCode, Shift

    End Select

    End Sub

Dadurch füllt die Prozedur das Textfeld mit dem aktuellen Datum und setzt den Parameter KeyCode auf den Wert 0. Indem Sie diesen Parameter innerhalb der Ereignisprozedur ändern, können Sie in die Nachrichtenkette eingreifen: Statt des ursprünglichen Werts, beispielsweise 32 für ein Leerzeichen, wird dann der Wert 0 als betätigte Taste weitergeleitet - was bedeutet, dass keine Taste gedrückt wurde.

Dies ist unbedingt nötig, weil Access sonst zuerst, wie gewünscht, das Datum in das Textfeld einträgt, dann aber das ursprüngliche Zeichen, also das Leerzeichen, an das Textfeld schickt. Dies kann je nach Einstellung dazu führen, dass das Leerzeichen das gerade eingegebene Datum überschreibt.

Vor und zurück

Nun fügen wir eine weitere Vereinfachung hinzu: Der Benutzer soll durch Betätigen der Nach oben- und Nach unten-Tasten das Datum einstellen können. Dabei soll das Element, auf dem sich die Einfügemarke aktuell befindet, jeweils um eins erhöht oder vermindert werden.

Wenn sich der Cursor also auf dem Monat befindet und der Benutzer auf Nach oben drückt, soll der Monat um eins erhöht werden.

Mit der Ausgabe der obigen Prozedur im Direktfenster ermitteln wir, welche Werte für den Parameter KeyCode der Nach oben- und Nach unten-Taste entsprechen. Dann erweitern wir die Select Case-Anweisung wie in Listing 1.

Listing 1: Einstellen des Datums in einem Textfeld per Nach oben- und Nach unten-Taste

Private Sub Beispieldatum_KeyDown(KeyCode As Integer, Shift As Integer)

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Ereignisprozeduren implantieren

Steuerelemente zur Laufzeit verschieben

Zeichenketten zerlegen

Texte aufteilen

Datumsbereiche auswählen

Kalendersteuerelement im Eigenbau

Mit Zeiten rechnen

Platzbedarf für Text ermitteln

Eingabe des Datums mit dem Kalendersteuerelement

Platzhalterauswahl per Kontextmenü

Termine in Berichten darstellen

Das Optionsgruppen-Steuerelement

Access 2007: Bilder und Schaltflächen

Modale Dialoge mal anders

TreeView-Elemente im Griff

Registersteuerelemente von A-Z

Importieren von Textdateien

Tipps und Tricks

Verleihen und Entleihen mit Access und Outlook

Stundenzetteldatenbank zur Dokumentation von Arbeitsleistungen

Datum und Zeit mit Access

Fristen berechnen leicht gemacht

Feiertage berechnen mit Access

TreeView-Konfigurator

Das Append-Only-Memofeld

Auswahlfelder im Ribbon

Listenfeld und Details in einem Formular

Validieren mit Klasse

HTML-Editor-Steuerelement

Listenfelder von A-Z

Unterformulare im Gleichschritt

Mehrsprachige Anwendungen

© 2003-2015 André Minhorst Alle Rechte vorbehalten.