Home
Montag, 6. September 2010
access:anwender
Produkte
access:anwenderPro
access:anwenderWissen
access:anwenderLösungen
Main Menu
Home
Tipps & Tricks
Access Forum
Access Blog
Suche
Kontakt
Impressum
Datenschutz
Ticket Support
Administrator
Login Form





Passwort vergessen?
Noch kein Benutzerkonto?
Registrieren
Tipp: Formulareingaben überprüfen PDF Drucken E-Mail

Oftmals ist man in nachfolgenden Abläufen auf korrekte Formulareingaben des Bedieners angewiesen. Eine Plausibilitätsprüfung ist stehts aufwendig da verschiedene Fälle bei verschiedenen Steuerelemente abzuprüfen sind.

Meistens reicht schon die Prüfung ob der Steuerelement-Wert Null ist. Für diesen Zweck setzt man dann die Funktion isNull(Ausdruck) ein, die Wahr zurückliefert wenn der Ausdruck Null ist.

Zu betrachten hat man i.d.R. alle gebundenen Steuerelement-Typen, in die man Werte eingeben oder auswählen kann. Im einzelnen ist dies das Text-, Listen- und Kombinationsfeld, Checkbox, Radio-Button und Auswahlrahmen

Die Plausibilitätskontrolle sollte möglichst universell für alle Steuerelemente und alle Formulare eingesetzt werden können. Daher benötigen wird ein Modul in das nachfolgender Code kopiert wird.

Option Explicit

Function FormularCheck(checkForm As Form) As Boolean
    Dim ctl As Control
    Dim i As Integer
    Dim err As String
    err = ""

    For Each ctl In checkForm.Controls
        If LCase(ctl.Tag) = "x" Then
            Select Case ctl.ControlType
                Case 105:    'Auswahlrahmen
                    If IsNull(ctl.Value) then err = err & ctl.name & vbCrLf
                Case 106:    'Kontrolkästchen
                    If IsNull(ctl.Value) then err = err & ctl.name & vbCrLf
                Case 107:    'Radio Button
                    If IsNull(ctl.Value) Or ctl.Value = 0 then err = err & ctl.name & vbCrLf
                Case 109:    'Textfeld
                    If IsNull(ctl.Value) then err = err & ctl.name & vbCrLf
                Case 110, 111:   'Listenfeld und Kombinationsfeld
                    If IsNull(ctl.Value) then err = err & ctl.name & vbCrLf
            End Select
        End If
    Next
    If Len(err) = 0 Then
        FormularCheck = True
    Else
        MsgBox "Folgende Felder müssen ausgefüllt werden:" & vbCrLf & err, vbExclamation + vbOKOnly
        FormularCheck = False
     End If
End Function

Als erstes benötigen wir die Information um welches Formular es sich handelt. Der Parameter checkForm ist als Form-Object deklariert, wodurch wir auf die Methoden des Formulars zugreifen können. Das Form-Object wird definiert mit: Forms(Formularname). Der Formularname kann ein String oder eine Variable sein. Hier wird der Namen automatisch gewählt über Me.Name.

Wir benötigen noch das zweite Object ctl für das Steuerelement (Control). Nun können in einer For Each Schleife alle Steuerelemente des Formular-Objektes durchlaufen lassen. Um zu bestimmen, welche Steuerelemente zu überprüfen sind, verwenden wir die Eigenschaft Marke (Englisch Tag). Jedes zu überprüfende Steuerelement erhält im Formular als Eigenschaft Marke ein x. Diese Eigenschaft fragen wird in der For Each Schleife ab. Mit lcase() wandeln wir die Marke in Kleinbuchstaben um, damit auch ein großes X erkannt wird. Definition der Marke siehe Bild unten.

Die Unterscheidung, um welche Art der Steuerlemente es sich handelt, geschieht mit der Eigenschaft ControlType. Diese kann mit einer internen Konstante oder mit dem entsprechendem Zahlencode verglichen werden. Die Bezeichnung für jeden einzelnen ControlType entnehmen Sie dem Code, sie ist als Kommentar eingefügt.

Wir verwenden die String-Variable Err für die Ausgabe der Fehlermeldung. In ihr werden alle Felder gesammelt die nicht ausgefüllt wurden. Diese Meldung wird dann ausgegeben, wenn diese Variable mit Werten gefüllt ist, also wenn min. 1 Steuerelement nicht ausgefüllt wurde. Zu guter Letzt übergeben wir den Rückgabewert, entweder wahr oder falsch, je nach dem die Prüfung erfolgreich war oder nicht. Mit Hilfe diesem Rückgabewert kann in der aufrufenden Funktion die weitere Bearbeitung ausgelöst werden.

Der Aufruf der Funktion erfolgt im Formular wo man die Eingabe überwachen möchte, am besten im Code einer vorhandenen Schaltfläche, z.B. zum Speichern der Eingaben:

     If FormularCheck(Forms(Me.name)) Then
          'hier die Verarbeitung im Erfolgsfalle
     End If

Die MsgBox-Ausgabe bei einem Fehler sieht dann z.B. wie folgt aus:

Sie haben nun eine wiederverwendbare Funktion, die Sie in jedem Projekt und für jedes Formular einsetzen können ohne jedesmal das Rad neu zu erfinden.

Sie können die Plausibilitätsprüfung auch dahingehend ändern, dass z.B. bei der Eingabe in Textfeldern eine Mindestanzahl an Zeichen gefordert wird. Ändern Sie dafür die folgenden Zeilen wie angegeben ab:

                Case 109:    'Textfeld
                    If IsNull(ctl.Value) then err = err & ctl.name & vbCrLf

Ersetzen mit:

                Case 109:    'Textfeld
                    If Len(Nz(ctl.Value, "")) < 3 then err = err & ctl.name & vbCrLf

Im obigen Beispiel wird eine Mindestanzahl von 3 Zeichen erwartet, diese Zahl kann beliebig geändert werden. Da ctl.Value im ungünstigsten Falle Null wird, muss dies mit der NZ()-Funktion abgefangen werden, um einen Fehler zu vermeiden.

 


 
© 2007 AccessHilfe.de - Informationsdienst, Hilfe und Support für Microsoft Access.de