3

我有两个相关的表,results并且userID.

results看起来像这样:

+----+--------+--------+
| ID | userID | result |
+----+--------+--------+
|  1 | abc    |    124 |
|  2 | abc    |    792 |
|  3 | def    |    534 |
+----+--------+--------+

userID看起来像这样:

+----+--------+---------+
| id | userID |  name   |
+----+--------+---------+
|  1 | abc    | Angela  |
|  2 | def    | Gerard  |
|  3 | zxy    | Enrico  |
+----+--------+---------+

results中,该userID字段是一个查找字段;它存储userID.id但组合框有userID.userID它的选择。

results当我尝试通过设置userID组合框并输入结果值来输入数据时,我收到以下错误消息:

You cannot add or change a record because a related record
is required in table `userID`.

这很奇怪,因为我专门选择了userID组合框中提供的值。

奇怪的是,已经有大约 100 行results具有相同值的数据userID

我认为这可能是数据库损坏问题,所以我创建了一个空白数据库并将所有表导入其中。但我仍然遇到同样的错误。这里发生了什么?

4

2 回答 2

1

这两个表都包含一个名为 的文本字段LanID。您在此关系中使用该字段,这会强制引用完整性:

关系图

您面临的问题是由于查找字段属性。这是行源:

SELECT [LanID].ID, [LanID].LanID FROM LanID ORDER BY [LanID]; 

但是存储的值(Bound Column 属性)是该语句的第一列,即Long Integer 。所以这个数字不会满足关系,这需要= 。 SELECT[LanID].IDresults.LanID[LanID].LanID

您必须更改关系或更改查找属性,以便两者都引用相同的字段值。

但如果是我,我会直接取消 Lookup,因为当涉及到 Lookup 字段时,简单的操作(例如这个)会变得不必要的混乱。制作results.LanID一个纯数字或文本字段。如果您想要某种用户友好的数据输入下拉菜单,请构建一个带有组合框或列表框的表单。

有关针对查找字段的其他参数,请参阅表中查找字段的弊端

于 2013-09-16T22:19:39.487 回答
0

如果您使用的是参数查询,请确保它们的顺序与您正在修改的表和您创建的查询的顺序相同。您可能有一个参数插入了冲突的数据。参数按照它们创建的顺序使用......不是参数的名称。我遇到了同样的问题,我所要做的就是切换它们的顺序,以便它们匹配查询。这是一个旧线程,所以我希望这对刚刚遇到此问题的人有所帮助。

于 2019-03-05T10:41:59.147 回答