我有一个具有多对多关系的Access数据库.origin表称为Property,目标表称为Person.房产可以拥有多个房产,一个人可以拥有多个房产.我创建了一个连接表来适应这种MM关系.
这是关系布局:
为了填充这些表,我为Property创建了一个表单,其中包含Person表的子表单.我按照几篇文章和帖子来实现所需的功能.他们在这里,这里,这里和这里.
这是表格:
PersonName是一个组合框,其行源设置为以下SQL查询:
SELECT Person.idPerson, Person.PersonName FROM Person;
列数设置为2,宽度设置为0厘米; 1厘米
我用于组合框的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表中创建新条目的功能,同时要求用户确认新条目?
PS我知道问题标题没有具体反映内容,但我找不到更好的措辞.
编辑:为了简化问题,我减少了表格中的字段.还有其他属性,如出生日期,可以区分两个同名的人.