实际上,我试图使用LibreOffice基础创建一个光荣的联系人列表。我们的许多联系人都有多个地址(办公室、邮件、家庭),有时多个人有相同的地址。
我创建了一个带有联系人ID、姓氏和名字的简单联系人表。我创建了一个带有地址ID、城市、州等的地址表,我还创建了一个具有联系人ID和地址ID的连接表,并使用relationships工具连接了这三个表。
现在我想把所有的东西都添加到一个表单中。我观看了这段youtube视频,这是非常有帮助的,但我希望能够添加新的城市,而不仅仅是从预先确定的名单中选择。因此,我跟着视频,但将列设置为“组合框”,而不是“列表框”。但是,当我尝试得到一个错误消息时:

插入新记录时出错 SQL状态: 23000错误代码:-177 完整性约束违反-没有父SYS_FK_94表:在语句中的地址表插入到“联系人-地址连接”(“地址ID",”联系人ID")值( ?,?)
我想有明显的东西我错过了,但在这一点上,我很卡住了。
E:我拍了更多的截图来展示关系,表格,以及在表格中事物是如何联系的:





发布于 2017-12-06 19:11:29
在你引用的视频中,这是一种愚蠢的行为,因为没有必要建立多到多的关系。作者可以简单地向类型表中添加一个Movie字段(因此多个类型记录可以指向每个电影记录)。
我有一个复杂的多到多联系人结构,我正在从MS Access移植到LibreOffice。它有4个主要数据表:组、地址、电话和人员。连接这些主表的链接表有6个: GroupAddress、GroupPhone、GroupPerson、AddressPhone、AddressPerson和最终的PhonePerson。不像上面你引用的只有2个字段的视频,在我的链接表中有3个字段。例如,GroupAddress有GroupAddressID (链接表本身的唯一id )、GroupID (指向Groups表)和AddressID (指向addresses表)。这允许每个组有任意数量的地址,同时允许每个地址有任意数量的组。
因此,整个系统具有最大的数据灵活性:例如,它允许每个组不受限制的人数,每个人可以有无限的电话或地址,每个地址,无限的人数,等等。
在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.组-地址链接(类似于上面的结构)
(例如,当企业有两个或多个地址时)
组-电话链接(类似于上面的结构)
(这是该组织直接拥有的电话#,而不是该小组成员的私人电话,也不是与特定地址相关的电话)。
还有另外三种类似的形式,
一个用于地址w/ Person、Group & Phone链接;
一个电话/组,地址和人的链接;
和一个为人w/组,地址和电话链接;
下面是4个编辑表单中的第一个表单的屏幕截图,用于编辑组和与组相关的链接:

希望这能有所帮助。我很想看看你有什么进展。谢谢。
https://stackoverflow.com/questions/47661774
复制相似问题