Frage

Ich entwickle eine Access 2003-Datenbank, die einen MS SQL Server-Backend verwendet.

Ich versuche Form Validation zu tun und einige Probleme erlebe.

  1. ValidationRule für jedes Feld scheint ignoriert werden
  2. Ich kann nicht herausfinden, welches Ereignis soll ich außer Kraft setzen Validierung zu erzwingen, ohne die Datenbank es tun. (Ich bin nicht dagegen, es ist nur mir unbekannt, wie ich Fehlermeldungen fangen würde, anstatt sie für den Benutzer)

Ich habe versucht, immer um die Nummer 2 durch Schließen disallowing und die Verwendung eines „Close Button“ Erzwingen, aber der Benutzer die Seite kann es Schritt für Tab-Taste oder über die „Next Record“ -Button am unteren Rand drücken.

würde Irgendwelche Vorschläge sehr geschätzt.

War es hilfreich?

Lösung

Wenn Sie die Validierungsregeln Eigenschaft verwenden, können Sie die Validierung fangen und Schlüsselfehler duplizieren, unter anderem in Form Fehlerereignis:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr=2107 Then
      MsgBox "Validation error! "  & ActiveControl.Name
   End If
End Sub

Sie können die Verwendung Ihrer Schließen-Schaltfläche mit einer variablen erzwingen auf Formularebene definiert und auf false gesetzt, wenn Ihr Schaltfläche geklickt wird.

Option Compare Database
Option Explicit

Public AllowClose As Boolean

Private Sub Form_Load()
    AllowClose = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Cancel = Not AllowClose
End Sub
Private Sub cmdClose_Click()
On Error GoTo Err_cmdClose_Click

    AllowClose = True
    DoCmd.Close

Exit_cmdClose_Click:
    Exit Sub

Err_cmdClose_Click:
    MsgBox Err.Description
    Resume Exit_cmdClose_Click

End Sub

Von: http://www.tek-tips.com/faqs .cfm? fid = 2071

Andere Tipps

Wenn Sie uns ein Beispiel für einen Ihrer Validierungsregeln geben, es könnte helfen.

Allerdings habe ich vor der Aktualisierung in die Validierung der Umsetzung unter der Gewohnheit gewesen (vor allem, wenn ich komplexere Validierungsalgorithmen haben)

Update: Ich habe einige Experimente und es scheint, dass die Gültigkeitsregel für das Feld nur überprüft, wenn Sie ein Update auf das Feld, aber nicht, wenn Sie ein Update irgendwo anders auf dem Formular machen, und nicht, wenn Sie den Datensatz speichern. Ich denke also, Ihre Lösung ist die Validierung Form_BeforeUpdate zu bewegen.

oder Sie könnten die Spalte in der Tabelle nicht-null machen -., Die die Nutzer etwas mit dem Feld zwingen würde,

oder, wenn das Feld „Testing“ sein muss, dann könnte man das Ganze Schritt Seite durch einen Standardwert einstellen und die Feldverriegelungs so dass der Benutzer kann es nicht ändern.

Sie können mit den Navigationstasten ausblenden, indem Sie die Form der Navigationstasten Eigenschaft auf „Nein“ einstellen Sie können auch zu einem neuen Datensatz nicht zulassen Tabbing durch die Form der Zyklus-Eigenschaft auf Einstellung „Aktuellen Datensatz.“

Mit jeder nicht trivialer Anwendungsschnittstelle in Access, ich in der Regel die Form sperre ziemlich eng und meine eigenen nav Knöpfe, Schließen-Schaltfläche liefern usw. je nach Bedarf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top