使用Access 2003 ADP项目执行表单验证

时间:2009-01-07 18:14:52

标签: vba validation ms-access access-vba

我正在开发一个使用MS SQLServer后端的Access 2003数据库。

我正在尝试进行表单验证并遇到一些问题。

  1. 每个字段的ValidationRule似乎都被忽略
  2. 我无法弄清楚在没有数据库的情况下我应该覆盖哪些事件来强制执行验证。 (我不反对,我不知道如何捕获错误消息,而不是将其显示给用户)
  3. 我尝试通过禁止关闭并强制使用“关闭按钮”来绕过2号,但用户可以通过按Tab键或按下底部的“下一个记录”按钮来执行步骤。 / p>

    任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果您给我们提供一个验证规则的示例,则可能有所帮助。

但是,我一直习惯于在更新之前进行验证(特别是当我有更复杂的验证算法时)

更新: 我做了一些实验,似乎只有在对字段进行更新时才会检查字段的验证规则,但是如果要在表单上的其他位置进行更新则不会,而不是在保存记录时。所以我认为您的解决方案是将验证移至Form_BeforeUpdate。

或者你可以使表中的列非空 - 这将迫使用户对该字段做一些事情。

或者,如果该字段必须是“Testing”,那么您可以通过设置默认值并锁定该字段来完成整个操作,以便用户无法更改它。

答案 1 :(得分:1)

如果您使用的是验证规则属性,则可以在表单错误事件中捕获验证和重复键错误:

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

您可以强制使用关闭按钮,使用在表单级别定义的变量,并设置为false,除非单击按钮。

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

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

答案 2 :(得分:1)

您可以通过将表单的导航按钮属性设置为“否”来隐藏导航按钮。您还可以通过将表单的Cycle属性设置为“Current Record。”来禁止跳转到新记录。

使用Access中的任何非竞争性应用程序界面,我通常会非常紧密地锁定表单,并根据需要提供我自己的导航按钮,关闭按钮等。