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

我有以下问题:

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

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: sql ms-access combobox lookup-tables


    【解决方案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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多