我正在检修使用社会安全号码构建的旧访问数据库作为PK,这是不再允许的。所以,我在正确地关联这些表方面做了大量工作。所以,它远远地显示信息但不允许添加。具体做法是:
在一个家庭中可以居住许多客户。客户可以住在一个家庭中。这意味着多对多的关系,所以我创建了一个名为Residency的联合表。
客户信息1
Client ID PK
Lastname
Firstnam
Address
家用
HouseholdID PK
DateAdded
居留
ResidencyID PK
HouseholdID FK
ClientID FK
Active
我的表单,基于查询:
SELECT [Clients information1].ClientID, [Clients information1].LASTNAME, [Clients information1].FIRSTNAM, [Clients information1].SSN, [Clients information1].MI, [Clients information1].ADDRESS, [Clients information1].CITY, [Clients information1].STATE, [Clients information1].ZIP, [Clients information1].PHONE, [Clients information1].BIRTHDTE, [Clients information1].MARSTAT, [Clients information1].RACE, [Clients information1].SEX, [Clients information1].INCOME, [Clients information1].NOINHOUS, [Clients information1].PRINCOME, [Clients information1].SEINCOME, [Clients information1].AGENCYID, [Clients information1].WARNMESS, [Clients information1].ALTS, [Clients information1].COUNTY, [Clients information1].Email, Distribution.Case, Residency.HouseholdID, Role.RoleID
FROM Role INNER JOIN (Household INNER JOIN ((([Clients information1] LEFT JOIN Distribution ON [Clients information1].ClientID = Distribution.ClientID) INNER JOIN Residency ON [Clients information1].ClientID = Residency.ClientID) ON Household.HouseholdID = Residency.HouseholdID) ON Role.RoleID = Residency.RoleID;
在HouseholdID上链接Parent to Child的子表单基于以下查询。我缩短了列表的可读性(这可能是问题,它基于查询的事实。但就像我说的那样显示当前记录很好!)
SELECT [Clients information1].ClientID, [Clients information1].LASTNAME, ...
Residency.HouseholdID, Residency.ClientID
FROM Household INNER JOIN ([Clients information1] INNER JOIN Residency ON [Clients information1].ClientID = Residency.ClientID) ON Household.HouseholdID = Residency.HouseholdID
ORDER BY [Clients information1].BIRTHDTE;
当我使用此表单向家庭添加新人时,它会成功添加到Client表,但不会添加到Residency表。当我刷新表单时,该人不会列出,但它们存在。
我需要在Client表和Residency表中添加一条记录,其中包含一个子表单条目。这不可能吗?建立了关系(如果我有足够的声誉,我会添加一个图像)。
答案 0 :(得分:0)
让我试着帮忙。但首先:
要执行此操作(IMO),您需要选择一个客户端,选择一个家庭,然后单击一个按钮添加居住地。假设您已经使用了列表框,那么ID可以显示在列表框中或隐藏 - 没有区别。 VBA代码如下:
Private Sub cmdAddResidency_Click()
Dim strSQL As String
DoCmd.SetWarnings False
strSQL = "INSERT INTO Residency (HouseholdID, ClientID) SELECT " & Me.lstClients.Column(0) & " AS Expr1, " & Me.lstHouseholds.Column(0) & ";"
CurrentDb.Execute strSQL
DoCmd.SetWarnings True
End Sub