Beitrag aus SmartTools Access Weekly
Eingaben in ein Access-Formular auf Wertebereich prüfen
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Ich verwende in einem Formular meiner Access-Datenbank ein Textfeld zur Bearbeitung von importierten Daten, das zunächst Zahlen mit Punkt und Komma getrennt enthält. Nach der Bearbeitung darf nur eine Zahl zwischen 1 und 999 stehen bleiben. Genau das möchte ich gerne programmatisch prüfen und sicherstellen. Wie muss der VBA Code zum Prüfen dieses Feldes lauten und an welchen Stellen setze ich ihn ein?
Diverse Anfragen
ANTWORT Nutzen Sie dazu die Ereignisprozedur "Vor Aktualisierung" des Textfeldes mit den folgenden Anweisungen:
Private Sub Feldname_BeforeUpdate(Cancel As Integer)
Dim varValue As Variant
If IsNull(Me.Feldname) Then
MsgBox "Feld darf nicht leer sein!"
Cancel = True
Me.Feldname.SetFocus
Exit sub
End If
varValue = CStr(Me.Feldname)
If InStr(varValue, ",") <> 0 Or _
InStr(varValue, ".") <> 0 Then
MsgBox "Feld darf kein Komma enthalten!"
Cancel = True
Me.Feldname.SetFocus
ElseIf IsNumeric(varValue) Then
If CInt(varValue) < 1 Or CInt(varValue) > 999 Then
MsgBox "Wert muss im Bereich 1 bis 999 liegen!"
Cancel = True
Me.Feldname.SetFocus
End If
Else 'Nicht numerisch
MsgBox "Eingabe muss im Bereich 1 bis 999 liegen!"
Cancel = True
Me.Feldname.SetFocus
End If
End Sub
"Feldname" ersetzen Sie durch den Namen des Feldes in Ihrem Formular. Es wird zunächst geprüft, ob das Feld einen Inhalt aufweist. Ist das nicht der Fall, wird eine entsprechende Meldung angezeigt, der Parameter "Cancel" auf "True" und der Focus auf das betreffende Feld gesetzt. "Cancel = True" sorgt dafür, dass Access den Datensatz nicht ändert und der Anwender das Feld nicht verlassen kann, bis die Eingabe stimmt. Ist ein Feldinhalt vorhanden, prüfen wir, ob das Feld ein Komma oder einen Punkt enthält, zeigen ggf. eine Meldung an und kehren Vortreffungen, dass der Anwender das Feld nicht verlassen kann und aktivieren es. Sind weder Punkt noch Komma vorhanden, prüft die Routine, ob der Feldinhalt numerisch ist und wenn ja, ob er im Bereich 1 bis 999 liegt. Ist das nicht der Fall, erfolgt wieder die Anzeige einer Meldung. Alle weiteren nichtnumerischen Inhalte führen zu einer letzten Meldung. Wichtig dabei: Es muss zunächst auf Komma und Punkt geprüft werden, weil "IsNumeric()" sonst z.B. "12,34" als gültigen numerischen Wert erkennen würde.