我正在开发一个使用MS SQLServer后端的Access 2003数据库。
我正在尝试进行表单验证并遇到一些问题。
我尝试通过禁止关闭并强制使用“关闭按钮”来绕过2号,但用户可以通过按Tab键或按下底部的“下一个记录”按钮来执行步骤。 / p>
任何建议都将不胜感激。
答案 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
答案 2 :(得分:1)
您可以通过将表单的导航按钮属性设置为“否”来隐藏导航按钮。您还可以通过将表单的Cycle属性设置为“Current Record。”来禁止跳转到新记录。
使用Access中的任何非竞争性应用程序界面,我通常会非常紧密地锁定表单,并根据需要提供我自己的导航按钮,关闭按钮等。