gpt4 book ai didi

ms-access - 多对多关系中的数据输入表单/子表单

转载 作者:行者123 更新时间:2023-12-03 17:38:42 27 4
gpt4 key购买 nike

我有一个多对多关系的 Access 数据库。源表称为 Property,目标表称为 Person。一个属性(property)可以有多个所有者,一个人可以拥有多个属性(property)。我创建了一个连接表来适应这种 M-M 关系。

这是关系布局:enter image description here

为了填充这些表,我为 Property 创建了一个表单,并为 Person 表创建了一个子表单。我遵循了几篇文章和帖子来实现所需的功能。他们是 here , here , herehere .

这是表格:enter image description here

PersonName 是一个组合框,其行源设置为以下 SQL 查询:

SELECT Person.idPerson, Person.PersonName FROM Person; 

列数设置为2,宽度设置为0cm;1cm

我用于组合框的 NoInList 事件的 VBA 代码是:

Private Sub PersonName_NotInList(NewData As String, Response As Integer)
strSQL = "INSERT INTO Person([PersonName]) " & _
"VALUES ('" & NewData & "');"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
MsgBox "The new person has been added to the list." _
, vbInformation, "Data Entry"
Response = acDataErrAdded
End Sub

到目前为止一切正常,但我遇到了两个人同名的情况。表单不允许这样做,因为每次您键入表中已有的名称时,您都会得到与此人关联的现有值。在 Person 表中创建一个新条目会使该条目在表单的组合框中可见,但我不希望数据输入用户编辑这些表。

如何实现从表单在 Person 表中创建新条目的功能,同时要求用户确认新条目?

附言我知道问题标题没有具体反射(reflect)内容,但我找不到更好的措辞。

编辑:为了保持问题简单,我精简了表格中的字段。还有一些额外的属性,比如出生日期,可以区分两个同名的人。

最佳答案

推荐的方法是弹出一个表单以将新人员添加到人员表中。您无法添加人员的直接问题可能是因为您将 [PersonName] 字段设置为人员表中的主键,或者将该字段设置为不允许重复的索引。

我建议您考虑查找有关数据规范化的信息。这将有助于理解主键和外键。

关于ms-access - 多对多关系中的数据输入表单/子表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com