【问题标题】:1:0..1 relationship in an access form based on a query基于查询的访问表单中的 1:0..1 关系
【发布时间】:2014-08-25 11:07:53
【问题描述】:

我有一个带有多个相关表的 Access 2007 数据库。有些关系是 1:0..1。

我还有一个查询来显示表 A 中的所有记录以及表 B 中的所有相关记录(如果有的话)。看起来是这样的(实际查询比较困难,但是对于实际的问题这应该足够了):

SELECT
    A.foo,
    A.bar,
    B.lorem,
    C.ipsum,
    C.dolor
FROM ((
    A
    LEFT JOIN
        B
        ON A.ID = B.[A: ID]
    )
    LEFT JOIN
        C
        ON A.ID = C.[A: ID]
    )

ORDER BY
    A.ID;

据我所知,此查询按预期工作。

此外,我还有一个表格可以用数据填充这些表格。

以前使用表单插入数据效果很好,但只显示了一些记录(A 和 B 以及 A 和 C 之间关系为 1:1 的记录)。

然后我把RecordSource改成了上面提到的查询(就像@ashareefsuggested一样)。现在所有记录都显示出来了(正如预期的那样),但我不能再在字段 B.lorem、B.ipsum 和 C.dolor 中输入数据 - 当我这样做时,我得到一个错误

索引或主键不能包含 Null 值。

我能做些什么来解决这个问题?

【问题讨论】:

    标签: sql forms ms-access ms-access-2007


    【解决方案1】:

    您无法更新回该 select 语句。它不知道将值推回何处。

    例如,如果您在表 B 上没有匹配到,这意味着 B.lorem 为 NULL,但是您尝试更新 lorem,在 B 中创建具有适当值的全新记录是不够聪明的。

    我建议您改用子表单,或者使用某种 VBA 技巧来创建记录。

    【讨论】:

      【解决方案2】:

      索引或键不能为零或空 - 如果您未插入任何值,则默认为空。检查表中的内容以及您尝试插入的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-10
        相关资源
        最近更新 更多