Im Formular das Datum des nächsten Wochenendes berechnen

Frage: Ich verwalte eine Wochenenddienst-Liste für Zahnärzte mit Access 97. In dieser Liste ist das einzugebende Datum immer genau sieben Tage später als das zuletzt eingegebene Datum. Nun möchte ich, daß Access automatisch das richtige Datum einträgt, jedoch bin ich mit Feldwerten nicht weitergekommen.

Dr. Roland Palman

 
Antwort: Mit Standardwerten für Felder geht da tatsächlich nichts. Wenn Sie die Berechnung aber direkt im Formular unterbringen, ist Access durchaus in der Lage, Ihrem Wunsch vollkommen zu entsprechen.

   Um das Formular anzupassen, wählen Sie im Datenbank-Fenster die Registerkarte ╗Formulare½ aus, markieren das Formular und klicken auf den Button ╗Entwurf½. Öffnen Sie dann das Eigenschaften-Fenster mit dem Menübefehl ╗Ansicht | Eigenschaften½. Dort finden Sie in der Registerkarte ╗Ereignis½ das ╗Vor-Eingabe-Ereignis½. Dieses Ereignis führt Access aus, wenn Sie das erste Zeichen in den Datensatz eingeben. Damit Access noch vor der Eingabe das richtige Datum anzeigt, programmieren Sie an dieser Stelle die Berechnung des Datums. Dazu klicken Sie auf den Button hinter dem Eingabefeld des Vor-Eingabe-Ereignisses und tippen das Listing ╗Dienstliste½ (im Kasten rechts) ein.

   In diesem Programm berechnet der ╗Select½-Befehl das bislang größte Datum in der Tabelle und speichert das Ergebnis in der Variable ╗MaxDat½. Anschließend addiert die Funktion ╗DateAdd()½ sieben Tage hinzu und legt das Datum im Formularfeld ╗[Datum]½ ab. Ein Beispiel finden Sie in der Datei ╗DIENSTLISTE.MBD½ auf der CHIP-Heft-CD.

 
Listing "Dienstliste"


Private Sub Form_BeforeInsert (Cancel As Integer)
    Dim DB As Database
    Dim Rs As Recordset
    Set DB = CurrentDb
    Set Rs = DB.OpenRecordset   -->
      ("select Max(Datum) as MaxDat from Dienstliste")
    Forms![Dienstliste]![Datum] =  -->
      DateAdd("d", 7, CDate(Rs![MaxDat]))
End Sub

Die mit --> gekennzeichneten Stellen nicht umbrechen, sondern in der selben Zeile fortsetzen.