1

我实际上是在尝试使用 LibreOffice Base 创建一个美化的联系人列表。我们的许多联系人都有多个地址(办公室、邮寄地址、家庭),有时多个人拥有相同的地址。

我创建了一个简单的联系人表,其中包含联系人 ID、姓氏和名字。我创建了一个包含地址 ID、城市、州等的地址表。我还创建了一个包含联系人 ID 和地址 ID 的联结表,并使用关系工具连接了三个表。

现在我想将所有内容添加到一个表单中。我观看了这个 youtube 视频,非常有帮助,但我希望能够添加新城市,而不是仅从预先建立的列表中进行选择。所以我跟着视频,但将列设置为“组合框”而不是“列表框”。但是,当我尝试时,我收到一条错误消息:

在此处输入图像描述

插入新记录时出错

SQL 状态:23000 错误代码:-177

违反完整性约束 - 没有父 SYS_FK_94 表:语句中的地址表 [INSERT INTO "Contact-Address Junction" ("Address ID","Contact ID") VALUES (?,?)]

我认为我缺少一些明显的东西,但在这一点上我很卡住。

E:我拍了更多的截图来展示表格中的关系、表格以及事物是如何连接的:

在此处输入图像描述
在此处输入图像描述
在此处输入图像描述
在此处输入图像描述
在此处输入图像描述

4

1 回答 1

1

在您引用的视频中,这有点愚蠢,因为不需要多对多的关系。作者可以简单地在流派表中添加一个电影 ID 字段(因此多个流派记录可以指向每个电影记录)。

我有一个复杂的多对多联系人结构,我正在将其从 MS Access 移植到 LibreOffice。它有 4 个主要数据表:组、地址、电话和人员。并且有 6 个链接表来连接这些主表:GroupAddress、GroupPhone、GroupPerson;地址电话,地址人;最后是PhonePerson。与您上面引用的只有 2 个字段的视频不同,在我的链接表中有 3 个字段。例如,GroupAddress 具有 GroupAddressID(链接表本身的唯一 ID)、GroupID(指向 Groups 表)和 AddressID(指向地址表)。这允许每个组有任意数量的地址,同时每个地址可以有任意数量的组。

所以整个事情具有最大的数据灵活性:例如,它允许每组无限数量的人,每个人可以拥有无​​限数量的电话或地址,每个地址无限数量的人,等等。

在 LO 中实现它:因为在 LO 中您不能编辑基于多个表的查询(您可以查看它,但不能编辑它),就像在 Access 中一样,(因此您也不能构建表单使用可以编辑基于多个表的查询的表),在 LO 中,这不像在 Access 中那样干净。

在 Access 中,它运行良好,并且链接表可以自行管理!在 LO 中,您必须在单独的表中手动编辑链接表。我开始考虑如何使用一些宏来改进这一点,但目前它只是简单的骨头。

为了让您更好地了解,编辑组的第一个表单,它还编辑组的地址、人员和电话(不仅是这些表,还包括这些表的链接),如下所示:


Group lookup pulldown (used to find a group record)  
(this is a drop down box with custom code that helps me find group records)

Group editing fields, e.g. Group name, category, url, etc

然后在下面

Group-Person links table

然后在那个右边

Persons table (plural) - to create new person, then..  

在此之下

Person table (singular)   
 [pointed to by Group-Person link]  
 to view person pointed to.

组地址链接 || (类似于上面的结构)
(例如,当一个企业有两个或多个地址时)


集团电话链接 || (类似于上面的结构)
(这是针对该组直接拥有的电话号码,而不是该组成员的个人电话,而不是与特定地址绑定的电话)。

----------

然后还有其他3种类似的形式,

一个用于带人员、组和电话链接的地址;

一个用于带有组、地址和人员链接的电话;

一个用于带有组、地址和电话链接的人员;

这是 4 个编辑表单中的第一个的屏幕截图,用于编辑组和与组关联的链接:

在此处输入图像描述

希望这可以帮助。我很想看看你的发展。谢谢。

于 2017-12-06T19:11:29.933 回答