Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

4.8.2 Validieren vor dem Speichern

4.8.3 Sonderfälle beim Validieren

Mit der oben genannten Vorgehensweise können Sie nicht alle möglichen Eingabefehler abfangen. Wenn im Tabellenentwurf festgelegte Einschränkungen (siehe Kapitel 2, Abschnitt 2.4, »Integritätsregeln«) bei der Eingabe oder beim Speichern des Datensatzes nicht berücksichtigt werden, werden die dadurch hervorgerufenen Meldungen vor dem Auslösen der Vor Aktualisierung-Ereignisprozeduren von Steuerelementen und Formularen angezeigt. Das ist zum Beispiel der Fall, wenn Sie einen Text in ein Datumsfeld eingeben (siehe Abbildung 4.64).

Abbildung 4.64: Access-eigene Validierungsmeldung

Wenn Sie diese Meldungen umgehen möchten, verwenden Sie die Bei Fehler-Ereigniseigenschaft des Formulars. Hier müssen Sie zwar ein wenig mehr Aufwand betreiben als bei den oben beschriebenen Validierungsfunktionen, aber dafür ersetzen Sie damit auch die Access-eigenen Validierungsmeldungen.

Im Formular frmProjekteDetailansicht kann es etwa passieren, dass eines der Felder Startdatum oder Enddatum mit einem Wert bestückt wird, der nicht den Datentyp Datum/Uhrzeit enthält, oder dass kein Kunde für das Projekt ausgewählt wird. Beide Fehler würden die Integritätsregeln verletzen und eine Access-eigene Meldung heraufbeschwören.

Diese Meldungen können Sie nur im Bei Fehler-Ereignis abfangen. Die folgende Routine wird durch dieses Ereignis ausgelöst und prüft, ob eines der beiden Datumsfelder einen ungültigen Wert enthält. Falls ja, gibt es eine entsprechende Meldung aus; der Fokus wird dann automatisch auf das betroffene Steuerelement gesetzt.

Damit Sie auf den richtigen Fehler reagieren, prüfen Sie in einer Select Case-Verzweigung die in DataErr enthaltene Fehlernummer und verzweigen entsprechend. Mit der Anweisung Screen.ActiveControl ermitteln Sie, bei welchem Steuerelement der Fehler ausgelöst wurde, und behandeln den Fehler dem betroffenen Feld entsprechend.

Ähnlich ist es beim Speichern des Datensatzes ohne Füllen des Pflichtfeldes KundeID. Die Fehlernummer lautet 3201 und Sie ermitteln ganz einfach, ob das Feld KundeID für diesen Fehler verantwortlich ist, indem Sie dessen Inhalt überprüfen. Ist dieser Null, muss der Benutzer den entsprechenden Kunden noch nachreichen. Wenn Sie nicht sicher sind, welche Fehlernummer sich hinter den eingebauten Fehlermeldungen verbirgt, lassen Sie sich in dieser Routine einfach den Wert DataErr mit der Debug.Print-Methode ausgeben.

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Dim ctl As Control
    Select Case DataErr
        Case 2113
            Set ctl = Screen.ActiveControl
            Select Case ctl.Name
                Case "Startdatum", "Enddatum"
                    MsgBox "Bitte geben Sie ein Datum im Format " _
                        "'dd.mm.jjjj' ein.", vbOKOnly + vbExclamation, _
                        "Eingabefehler"
                    Response = acDataErrContinue
                    Exit Sub
            End Select
        Case 3201
            If Me!KundeID = 0 Then
                MsgBox "Bitte wählen Sie einen Kunden für dieses " _
                    & "Projekt aus.", vbOKOnly + vbExclamation, _
                    "Fehlende Eingabe"
                Response = acDataErrContinue
                Me!KundeID.SetFocus
                Exit Sub
            End If
    End Select
End Sub

Listing 4.50: Behandlung von Verletzungen der Integrität bei der Dateneingabe

Nächster Abschnitt:

4.9 Suchen in Formularen

© 2006-2008 André Minhorst Alle Rechte vorbehalten.