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 3/2003.

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

Tipps & Tricks zu Formularen

Datensätze kontrolliert
speichern

Access stellt Ihnen unterschiedliche Werkzeuge zur Verfügung, um die Eingaben des Anwenders zu kontrollieren und ggf. zu korrigieren. Die Kontrollmöglichkeiten sollten Sie intensiv einsetzen, wenn Sie einen sauberen Datenbestand in Ihrer Datenbank sicherstellen möchten.

Die einfachste Möglichkeit, die Eingaben zu überwachen, sind Gültigkeitsregeln für einzelne Datenfelder. Allerdings werden die Regeln bei jedem Feld separat hinterlegt und können nicht zentral an einer Stelle überprüft werden. Sie können ferner keine komplexen Regeln definieren, die sich zum Beispiel an den Eingaben des Benutzers orientieren.

Einfacher geht das Ganze mit Ereignisprozeduren auf Formularebene, in denen Sie die Regeln und Aktionen festlegen. Weitere Einsatzmöglichkeiten für die Ereignisprozeduren sind Gültigkeitsüberprüfungen,

Ereigniskette

Für den Einsatz der Ereignisse müssen Sie aber wissen, welche Sie wann am besten verwenden. Wichtig ist hierbei die Reihenfolge, in der Access die Ereignisse auslöst. Für die Erfassung und Speicherung eines Datensatzes gilt die folgende Ereigniskette:

Das Ereignis Vor Eingabe wird von Access ausgelöst, wenn Sie das erste Zeichen in einem neuen Datensatz eingeben. Der Datensatz ist dann noch nicht gespeichert.

Das Ereignis Vor Aktualisierung tritt ein, wenn Sie einen Datensatz verlassen oder speichern, aber bevor der Datensatz tatsächlich in der Datenbank aktualisiert wird. Änderungen können jetzt noch rückgängig gemacht werden. Doch das Ereignis wird nur ausgelöst, wenn Sie mindestens in einem Datenfeld eine Änderung durchgeführt haben.

Abb. 1: Eingabeprüfung auf Formularebene

Private Sub Form_BeforeUpdate(Cancel As Integer)

    If Me!Anzahl > 10 Then

        MsgBox "Die Anzahl ist zu groß"

        Cancel = True

    End If

End Sub

Quellcode 1

Private Sub Form_BeforeUpdate(Cancel As Integer)

    Dim DoCancel As Boolean

    DoCancel = False

    If Me!AbschlussID.Column(2) = True Then

        If IsNull(ZertifikatErhaltenAm) Then

            MsgBox "Bitte geben Sie ein Datum ein.", vbExclamation, "Datum eingeben..."

            DoCancel = True

        End If

        If Nz(Me!Note, 0) = 0 Or Me!Note > Me!MindestNote Then

            MsgBox "Bitte geben Sie eine Note ein die" _
                & " kleiner/gleich der Mindestnote " _
                & " ist.", "Note eingeben..."

            DoCancel = True

            Me!Note.SetFocus

        End If

    End If

   ... 

   'weitere Prüfungen

   ...

    Cancel = DoCancel

End Sub

Quellcode 2

Das Ereignis Nach Aktualisierung wird von Access ausgelöst, nachdem die geänderten Daten im Datensatz aktualisiert wurden, während das Ereignis Nach Eingabe nur nach Anlage eines neuen Datensatzes von Access ausgelöst wird.

Ereignisse abbrechen

Die Ereignisse Vor Eingabe und Vor Aktualisierung können Sie per Programmcode abbrechen und damit verhindern, dass die ausgeführten Änderungen akzeptiert werden.

Hierzu verwenden Sie den Parameter Cancel der Ereignisprozeduren. Setzen Sie den Parameter auf True, wenn Sie den Einfüge- bzw. Aktualisierungsvorgang abbrechen möchten. Ein Beispiel finden Sie in Quellcode 1. Zunächst wird der Inhalt des Feldes Anzahl geprüft. Erfüllt der Wert nicht die definierte Bedingung, gibt die Prozedur eine Meldung aus und bricht den Vorgang ab. Der Benutzer muss also eine Zahl kleiner als oder gleich 10 eingeben, sonst kann der Datensatz nicht gespeichert werden.

Praxisbeispiel

Ein praktisches Beispiel für die Anwendung der beschriebenen Ereignisse erhalten Sie in der Musterlösung Schulungsverwaltung dieser Ausgabe.

Dort trägt der Anwender im Formular frmAbschluesseEingeben die Abschlussnote und das Datum des Abschlusses für die Teilnehmer einer Schulung ein (s. Abb. 1).

Private Sub Form_AfterUpdate()

    If Nz(Me!AbschlussID, 0) > 1 Then

        If MsgBox("Möchten Sie das Zertifikat jetzt drucken?", _

            vbQuestion + vbYesNo, "Zertifikat drucken") = vbYes Then

            Zertifikatdrucken Me!KursteilnehmerID

        End If

    End If

End Sub

Quellcode 3

Das Ereignis Vor Aktualisierung (s. Quellcode 2) wird hier verwendet, um zu prüfen, ob der Benutzer das Datum eingegeben hat und ob die Note - falls erforderlich - kleiner oder gleich der Mindestnote ist.

Fehlt das Datum oder wird die Mindestnote nicht erreicht, gibt die Prozedur eine entsprechende Fehlermeldung aus und bricht den Speichervorgang ab.

Sind vom Anwender alle Eingaben den Regeln entsprechend ausgeführt worden, wird das Ereignis Nach Aktualisierung ausgelöst. Hier können nun weitere Aktionen folgen, die sich auf die Feldwerte des aktualisierten Datensatzes beziehen.

Im Beispiel wird in diesem Ereignis geprüft, ob der Kurs als bestanden eingegeben wurde (AbschlussID > 1) und der Anwender das passende Zertifikat direkt drucken möchte (s. Quellcode 3).

Mit diesem Ereignis lässt sich der Prozess Zertifikat drucken automatisieren, ohne dass der Anwender noch auf eine weitere Schaltfläche klicken muss.

Zwei auf einen Streich

In großen Anwendungen mit vielen Formularen ist es fast unumgänglich, dass einige Unterformulare in mehreren unterschiedlichen Hauptformularen verwendet werden.

Das ist auch dann der Fall, wenn es sich um ein Unterformular handelt, das die Zwischentabelle einer n:m-Beziehung in Listenform darstellt. Solche Unterformulare werden meist in zwei Hauptformularen - aber mit unterschiedlichen Anzeigefeldern - benötigt.

In diesem Tipp erfahren Sie, wie Sie es vermeiden, zweimal dasselbe Formular mit ggf. nur geringen Abweichungen anzulegen und statt dessen nur ein Formular zu verwenden.

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.