MS-Access 表单组合框不能限制粘贴的记录

Posted

技术标签:

【中文标题】MS-Access 表单组合框不能限制粘贴的记录【英文标题】:MS-Access Form Combo box can't limit pasted records 【发布时间】:2014-02-17 16:57:57 【问题描述】:

我们有一个 Access 数据库来跟踪工作请求。我们有一个表格,我们可以在其中输入请求的信息。我们希望将可以输入的部门限制在一个列表中,我们已经在一个名为 Departments 的表中输入了该列表。

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

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

我尝试使用更新前事件过程,但不知道如何根据我的 Departments 表中的条目来评估我表单中的当前 Department 条目。谁能建议如何创建此验证?

【问题讨论】:

【参考方案1】:

类似:

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

【讨论】:

【参考方案2】:

由于您运行的是 Access 2010,因此您可以通过使用像这样的 Before Change 数据宏在表级别强制执行验证:

有关详细信息,请参阅

Create a data macro

【讨论】:

@SMartin 你可以下载一个工作示例here。 找到了另一种使用 DLookup 在表单级别处理它的方法,但还不能发布答案;不过这很有帮助,我将来会检查一下。感谢您的帮助。【参考方案3】:

我认为您要做的是在您的 Departments 字段和 Departments 数据库中的相应字段之间建立关系。强制执行推荐完整性(无级联),这应防止任何人在您的部门表中不存在该部门的工作请求表中添加记录。

【讨论】:

以上是关于MS-Access 表单组合框不能限制粘贴的记录的主要内容,如果未能解决你的问题,请参考以下文章

在 ms-Access 中使用组合框创建搜索表单

如何在表单上制作可编辑的组合框

如何根据每条记录的连续表单中 ms-access 中的其他值填充文本框上的值

数据表中的 MS-Access 未绑定组合框?

ms-access 2007 年报告

将文本框中的值插入 2 个不同的表 ms-access