Kalender mit Termineingabe

Sicherlich kennen Sie das Kalender-Steuerelement, das mit Access ausgeliefert wird. Klassischerweise setzen Sie es in Formularen ein, um die Datumsauswahl für Eingabefelder zu vereinfachen. Besonders komfortabel ist aber auch der Einsatz in Terminlisten, Projektplänen und ähnlichen Anwendungen. Zum Beispiel: In einem Formular soll links das Kalender-Steuerelement angezeigt werden. Nach einem Klick auf ein Datum werden dann rechts davon die passenden Termine angezeigt. Am einfachsten lässt sich das realisieren, wenn Sie eine Kombination aus Kalender- Steuerelement und Unterformular verwenden. Dabei wird das Datum direkt mit dem Kalender-Steuerelement verknüpft.

Sie finden hier einen Monatskalender, in dem Sie über zwei Kombinationsfelder komfortabel blättern können. Wenn Sie einen beliebigen Tag anklicken, erscheint direkt daneben automatisch eine Liste der bereits vorgemerkten Termine. Außerdem können Sie an dieser Stelle neue Einträge für den ausgewählten Tag vornehmen. Einfacher geht es nicht.

 

Sehen wir uns die Funktionsweise dieser Lösung einmal etwas genauer an. Die Grundlage bildet eine Tabelle „Termine“ mit den Feldern „tDatum“ (Datum des Termins), „tZeit“ (Uhrzeit für den Termin) und „tText“ (Beschreibung des Termins). Basierend auf dieser Tabelle, haben wir eine Abfrage „AFfrm Termine“ und ein Unterformular „UF Übersicht“ erstellt.

Zusammengesetzt wird das Ganze im Formular „Übersicht“. Hier haben wir zunächst links das Kalender-Steuerelement über den Befehl EINFÜGEN-ACTIVEXSTEUERELEMENT platziert. Rechts davon befindet sich ein Unterformular-Steuerelement, dem wir als Herkunftsobjekt „UF Übersicht“ zugeordnet haben.

Damit das Kalender-Steuerelement nicht zu viel Platz wegnimmt, haben wir die Anzeige von Monat und Jahr ausgeschaltet. Im Eigenschaftenfenster können Sie dazu auf der Registerkarte „Allgemein“ im Bereich „Anzeigen“ die Option „Monat/Jahr- Titel“ deaktivieren und die Änderung mit einem Klick auf OK übernehmen.

 

Steuerelement und Unterformular verknüpfen

Die Verknüpfung vom Kalender-Steuerelement zum Unterformular „UF Übersicht“ erfolgt über die Eigenschaften „Verknüpfen von“ und „Verknüpfen nach“ des Unterformular-Steuerelementes. Bei „Verknüpfen von“ geben Sie den Namen des Feldes im Unterformular an, das das Datum des Termins beinhaltet – in unserem Beispiel ist das „tDatum“. Bei „Verknüpfen nach“ geben Sie normalerweise den Namen eines Feldes des Hauptformulars an. Da in unserem Fall kein Feld, sondern ein Steuerelement verwendet wird, müssen Sie hier den Namen des Steuerelementes und die entsprechende Eigenschaft des Steuerelementes angeben, zu der verknüpft werden soll. Das Steuerelement heißt in unserem Beispiel „MsCal1“, die Eigenschaft, die das jeweils eingestellte Datum beinhaltet, hat den Namen „Wert“ (Value). Die Verknüpfung geht also von „MsaCal1.Wert“ zu „tDatum“.

Leider ist das erst die halbe Miete: Während Access bei Verknüpfungen zu Unterformularen, die auf Feldern basieren, das Unterformular automatisch nach einer Änderung aktualisiert, müssen Sie das bei einem ungebundenen Steuerelement manuell erledigen. Dazu müssen Sie in der Ereignisprozedur „Click“ die folgende Anweisung eingeben:

Me.UF_Übersicht.Requery

Klicken Sie dazu mit der rechten Maustaste auf das Kalender-Steuerelement, wählen Sie den Eintrag EREIGNIS aus dem Kontextmenü und wählen „Click“ in der Liste oben rechts im VBA-Editor. Nach Eingabe der oben gezeigter Anweisung schließen Sie den VBA-Editor wieder. Durch diese Anweisung wird nun nach jeder neuen Auswahl eines Datums das Unterformular entsprechend aktualisiert.

Es gibt allerdings ein Problem, das Sie kennen sollten: Die Auswahl eines neuen Monats/Jahres aus den Listen im Kalender- Steuerelement lässt sich auf diesem Weg nicht abfangen! Wenn nun beispielsweise im Unterformular die Termine für den 15. 3. 2004 angezeigt werden und der Anwender den Monat „Februar“ wählt, bleiben die Termine vom 15. 3. sichtbar. Erst wenn der Anwender auf einen Tag im Februar klickt, wird die Anzeige aktualisiert. Das lässt sich leider nicht ändern, da das Kalender-Steuerelement keine Ereignisprozeduren zur Verfügung stellt, um auf Monats- oder Jahreswechsel zu reagieren.

Und noch ein nützlicher Tipp: Wenn Sie ein Formular mit einem darin enthaltenen Kalender-Steuerelement öffnen, zeigt das Kalender-Steuerelement normalerweise immer das aktuelle Systemdatum an. Um das Kalender-Steuerelement auf ein anderes Datum zu setzen, verwenden Sie die Ereignisprozedur „Beim Laden“ des Formulars:

Private Sub Form_Load()
Me.MsCal1.Value = „12.3.2004“
Me.UF_Übersicht.Requery
End Sub

Durch diese Zuweisung ändern Sie Tag, Monat und Jahr für die Anzeige im Kalender- Steuerelement auf den 12. März 2004. Anschließend wird dann eine Aktualisierung des Unterformulars durchgeführt.