我有一个包含多个相关表的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
更改为上面提到的查询(就像@ashareef suggested)。现在所有记录都显示出来(正如预期的那样),但我不能再在B.lorem,B.ipsum和C.dolor字段中输入数据 - 当我这样做时,我收到错误
索引或主键不能包含Null值。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您无法更新回选择语句。它不知道将值推回到何处。
例如,如果您没有在表B
上获得匹配,意味着B.lorem
为NULL,但是您尝试更新lorem,那么它不够聪明,无法创建B中的全新记录,具有适当的值。
我建议您使用子窗体,或者使用某种VBA技巧来创建记录。
答案 1 :(得分:0)
索引或键不能为零或为null - 如果未插入任何值,则其默认值为null。检查表格中的内容以及您尝试插入的内容。