MS Access:多表形式,其中一个表被调用两次

Posted

技术标签:

【中文标题】MS Access:多表形式,其中一个表被调用两次【英文标题】:MS Access: multitable form where one of the table is called twice 【发布时间】:2020-07-08 19:54:54 【问题描述】:

我有以下问题:

我想创建一个文档数据库。每个文档都与两个员工相关联(其中一个准备文档,另一个检查并批准它),所以我有两个简单的表:文档和员工。 Documents 表包含两个与员工 ID 相关联的字段:PreparerID 和 CheckerID。

当我尝试在一个关系中链接两个表时,Access 声明它无法确保引用完整性:

所以我放了同一张表的另一个实例:

现在我想创建一个表单,用户可以在其中为每个文档设置准备者和批准者: 在查询生成器中,我看到了这一点,因此我必须从关系生成器重复过程:

最后,在表单上,​​我将员工选择的两个字段都设置为 ComboBox,并将行源设置为 Employee.EmpName。

但表单无法按预期工作。当我更改某个审批人时,它也会更改他作为准备人的所有文档。所以很明显我试图以错误的方式解决这个问题。 你能帮我吗,如何正确地做到这一点?

谢谢!

【问题讨论】:

【参考方案1】:

组合框绑定到错误的字段。选择正在更改员工表记录中 EmpName 的值,而不是保存文档表记录中的值。

不要在表单 RecordSource 中包含员工表。只需绑定到 Documents 表即可。

设置组合框属性:

ControlSource:Documents 表的字段 - PreparerID 或 CheckerID 行来源:SELECT ID, EmpName FROM Employees ORDER BY EmpName; BoundColumn: 1 列数:2 列宽:0";2"

姓名部分应该放在单独的字段中,以便于搜索和按姓氏排序:FName、LName。所以组合框 RowSource 可以是:SELECT ID, LName & ", " & FName AS FullName FROM Employees ORDER BY LName, FName;

【讨论】:

以上是关于MS Access:多表形式,其中一个表被调用两次的主要内容,如果未能解决你的问题,请参考以下文章

MS Access -> Excel MsgBox 出现两次

MS Access:需要按两次退格键才能删除从 Excel 复制过来的一个字符

ACCESS数据库多表查询?

MS Access 数据库关闭,忽略表单关闭取消 true

MS-Access 2013;根据多记录形式的记录数据更改组合框选项

C# 以多种形式使用 MS Access 数据库