News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

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.