Der Validator prüft nichts
Ein WklValidator auf einem Formular hat Regeln, aber das Verlassen eines Felds oder das Speichern eines Datensatzes
wird nie abgelehnt, und kein Feld wird markiert.
Umgebung
WKL Forms Object Library ab 1.31. Microsoft 365 Access, 32 Bit; andere Versionen werden nicht unterstützt.
Ursache
Access gibt die Ereignisse eines Formulars und seiner Steuerelemente nur dann an ein anderes Steuerelement weiter, wenn
das Formular ein Modul hat. Der Validator hört auf diese Ereignisse; auf einem Formular, dessen Enthält Modul
(HasModule) auf Nein steht, erhält er keines – auch dann nicht, wenn die Ereigniseigenschaften
[Ereignisprozedur] angeben. Er zeigt dann in seinem Rechteck „Prüfung inaktiv: das Formular … braucht ein Modul“,
und IsConnected ist False.
Zwei weitere Ursachen führen bei einzelnen Ereignissen zum selben Symptom:
- Eine Ereigniseigenschaft des Formulars oder eines geprüften Steuerelements enthält ein Makro oder einen Ausdruck statt [Ereignisprozedur]: Access gibt dieses Ereignis nur an das Makro weiter.
- Eine Regel nennt ein Feld, zu dem es auf dem Formular kein Steuerelement gibt: Es wird vor dem Speichern geprüft, aber es gibt nichts zu verlassen und nichts zu markieren.
Lösung
- Öffnen Sie das Formular in der Entwurfsansicht und setzen Sie im Eigenschaftenblatt (Registerkarte Andere) Enthält Modul auf Ja. Ein leeres Modul genügt; die Ereigniseigenschaften setzt der Validator selbst.
- Ersetzen Sie ein Makro in Vor Aktualisierung, Nach Aktualisierung, Bei Fehler, Beim Anzeigen oder Bei Rückgängig des Formulars oder in Vor Aktualisierung eines geprüften Steuerelements durch [Ereignisprozedur], und rufen Sie das Makro aus der Prozedur auf.
- Prüfen Sie die Namen in den Regeln gegen die Steuerelemente (die Designerseite Feldregeln führt die Steuerelemente des Formulars auf), und öffnen Sie das Formular erneut.
IsConnectedist True, wenn der Validator zuhört.