2014-02-17 41 views
0

我们有一个Access数据库来跟踪工作请求。我们有一个表单,用于输入请求的信息。我们希望将可以输入的部门限制在一个列表中,我们已经在一个名为部门的表格中输入了这个列表。MS-Access表单组合框不能限制粘贴的记录

Departments控制我们的工作请求输入表单是一个基于Departments表的组合框。这用于限制手工输入的部门;然而,通常通过复制和粘贴旧信息作为整个记录来输入作业,并根据需要更改任何信息。发生这种情况时,部门控制不受组合框的限制。

我需要一种方法来验证在记录保存到表格之前,在表单中根据Department字段中的条目在表单上的Department控件中输入的数据。如果来自粘贴条目的部门与Departments表中的任何记录不匹配,我希望它会抛出一个消息框。

我试图使用BeforeUpdate事件过程,但无法弄清楚如何根据我的Departments表中的条目评估我的表单中当前的Department条目。任何人都可以建议如何创建此验证?

回答

0

喜欢的东西:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
Dim strSQL As String 
Dim RS As DAO.Recordset 
strSQL = "select * from Table1 where (Flda) = '" & Me.txtFldA & "';" 
Set RS = CurrentDb.OpenRecordset(strSQL) 
If RS.EOF Then 
    MsgBox "Not a valid Department", vbOKOnly, "Incorrect Department Entered" 
End If 
RS.Close 
Set RS = Nothing 
End Sub 
0

既然你运行Access 2010,您可以通过使用Before Change数据宏这样的执行在表级别的验证:

BeforeChange.png

欲了解更多信息,见

Create a data macro

+0

@SMartin你可以下载一个工作示例[here](http://wikisend.com/download/120420/Validation.zip)。 –

+0

找到另一种方式在DLookup的表单级别处理它,但不能发布答案。这很有帮助,但我会在将来查看它。谢谢你的帮助。 –

0

我想你想要做的是建立你的部门领域和部门数据库中的相应领域之间的关系。强制推荐的完整性(没有级联),并且这应该防止任何人在您的工作请求表中添加一个记录,其中部门不在您的部门表中。