Plausibilitätsprüfung

Zur Kontrolle der Daten welche durch den Anwender eingegeben werden, bestehen mehrere Möglichkeiten.

Gültigkeitsregeln in Tabellen

Alles was mit booleanscher Algebra ausdrückbar ist, kann in der Gültigkeitsregel erfasst werden. Nicht möglich ist eine differenzierte Fehlermeldung, also die Aussage, der Eingegebene Wert ist zu gross oder er ist zu klein, da nur eine einzige Fehlermeldung zulässig ist.

Beziehung mit referenzieller Integrität

Sind die Werte, welche in einem Feld eingetragen werden dürfen, bekannt, so können diese in eine eigene Tabelle erfasst werden. Diese Tabelle kann dann mittels einem Dropdownfeld in Beziehung gestellt werden. Das Dropdownfeld kennt die Eigenschaft, "nur Listeneinträge". Somit lassen sich alle unbekannten Werte ausschliessen. Nachteil: Die Fehlermeldung (NotInList) ist nicht besonders aussagekräftig.

Kontrolle durch VBA-Programm

Felder auf Gültigkeit prüfen

Mit Hilfe von VB-Code kann die Eingabe eines Wertes in eine Formular vor dessen Speicherung geprüft werden. Eine differenzierte Fehlermeldung ist programmierbar.

Das zu überwachende Feld, besser das gesamte Formular, erhält einen Code in der Ereigniseigenschaft "Vor Aktualisierung". Vor Aktualisierung wird ausgeführt bevor der Datensatz gespeichert wird.

   Dim vFalsch As Boolean
   vFalsch = False
   Select Case Me.tfJahrgang.Value
      Case ""
         vFalsch = True
         MsgBox "Es muss ein Jahrgang eingegeben werden!"
      Case Is < 1880
         vFalsch = True
         MsgBox "Der Jahrgang muss nach 1880 liegen!"
      Case Is > Year(Now())
         vFalsch = True
         MsgBox "Der Jahrgang kann nicht in der Zukunft liegen!"
  End Select


  If vFalsch Then
     Me.tfJahrgang.SetFocus
     DoCmd.CancelEvent
  End If

Me.tfJahrgang.SetFocus setzt den Cursor in das Feld tfJahrgang des aktuellen Formulars
DoCmd.CancelEvent bricht das aktuelle Ereignis, in diesem Fall speichern, ab.

Felder ohne Eingabe speziell markieren

In Formularen mit vielen Datenfeldern und bereits vorbelegten Datenfeldern kann es vorkommen, dass Felder welche für die Eingabe verändert werden müssen, leicht übersehen werden. Mit Hilfe folgender Regeln wollen wir erreichen, dass deutlich sichtbar wird, welches Feld verändert wurde:

Die Deklaration der Konstanten erfolgt ausserhalb aller Prozeduren. Somit haben die Konstanten globalen Charakter. Beachten Sie die Ereignisse auf welchen die folgenden Prozeduren programmiert sind.

'Vorbelegung von Konstanten mit Farbwerten
Const lngRot = 255
Const lngGelb = 65528
Const lngWeiss = 16777215

Private Sub cmdHauptmenü_Click()
   DoCmd.Close
   DoCmd.OpenForm ("frmHauptmenü")
   DoCmd.Beep
End Sub


Private Sub Form_BeforeInsert(Cancel As Integer)
   'Vor Eingabe des ersten Zeichens, Farbe anpassen
   '-----------------------------------------------
   Me.Hausnummer.BackColor = lngRot
   Me.Firma.BackColor = lngRot
   Me.Strasse.BackColor = lngRot
   Me.PLZ.BackColor = lngRot
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
   Fehler = False

   'Plausibilitätsprüfung
   '--------------------
   If IsNull(Me.Hausnummer.Value) Then
      MsgBox "Ohne Hausnummer geht es nicht"
      Me.Hausnummer.SetFocus
      DoCmd.CancelEvent
      Fehler = True
   End If

   'Inhalt des Feldes aus Formular auf Variabel legen
   vFirma = Me.Firma.Value

   'Erstes Leerzeichen finde und dessen Position auf vPos1 legen
   vPos1 = InStr(1, vFirma, " ")

   'zweites Leerzeichen finden (hinter vPos1+1)
   vPos2 = InStr(vPos1 + 1, vFirma, " ")

   'Anwender informieren
   MsgBox "Leerzeichen befinden sich an den Positionen " & vPos1 & " und " & vPos2, , vFirma


   'wenn kein Fehler aufgetreten ist, Farben zurück setzen
   '------------------------------------------------------
   If Fehler = False Then
      Me.Hausnummer.BackColor = lngWeiss
      Me.Firma.BackColor = lngWeiss
      Me.Strasse.BackColor = lngWeiss
      Me.PLZ.BackColor = lngWeiss
   End If
End Sub


' Wenn ein Feld geändert wird, Farbe ändern
' -----------------------------------------
Private Sub Hausnummer_Change()
   Me.Hausnummer.BackColor = lngGelb
End Sub

Private Sub PLZ_Change()
   Me.PLZ.BackColor = lngGelb
End Sub

Private Sub Strasse_Change()
   Me.Strasse.BackColor = lngGelb
End Sub

Private Sub Firma_Change()
   Me.Firma.BackColor = lngGelb
End Sub

Vor und Nachteile

Es gibt nicht "DIE" Methode für eine Plausibilitätsprüfung. Jede Situation muss aufgrund der Vor- und Nachteile geprüft werden. Es können in einer Datenbank unterschiedlichste Methoden angewendet werden. Grundsatz: Je näher die Prüfung bei den Daten stattfindet, um so besser.

 
  Vorteil Nachteil
Gültigkeitsregel auf Tabelle
  • Schnell und einfach zu realisieren
  • Regeln sind bei den Date und können nicht umgangen werden
  • Nur eine Fehlermeldung pro Feld möglich
  • Keine differenzierten Werte abfragbar.
  • Änderungen an den Regeln erfolgt durch den Programmierer
Beziehung mit referenzieller Integrität
  • Beliebige unregelmässige Werte prüfbar
  • Regeln können durch den Anwender verändert werden.
  • Entwicklungsaufwand ist grösser
VBA Code auf Formular
  • Beliebige Prüfungen mit beliebigen Fehlermeldungen möglich. Auch Prüfung von unterschiedlichen Feldern gegeneinander.
  • Programmierung notwändig
  • Regeln können umgangen werden indem ein anderes Formular, Abfrage oder Tabelle für die Eingabe verwendet wird.

 

Ihre Aufgabe Taxiunternehmen