Access下拉框整合多表名称并保存ContributorId方案问询
Access多表名称合并下拉框实现方案
一、梳理表关联逻辑
1. 完善ContributorNames表结构
作为统一名称的中间表,字段需包含:
NameId:自动编号(主键)ContributorId:数字型,关联Contributors表的ContributorId(外键)NameValue:文本型,存储具体名称(个人/配偶/企业)NameTypeId:数字型,关联ContributorNameTypes表主键(区分名称类型)
2. 建立表间关系
- Contributors ↔ ContributorNames:通过
ContributorId建立一对多关系(一个贡献者对应多个名称) - ContributorNameTypes ↔ ContributorNames:通过
NameTypeId建立一对多关系(一个类型对应多个名称) - 保留Contributors与ContributorSpouses、ContributorBusinesses的原有一对多关联,用于后续数据同步
二、同步现有数据到ContributorNames
用追加查询批量导入已有数据,后续可通过数据宏自动同步新增/修改内容:
1. 导入个人名称
INSERT INTO ContributorNames (ContributorId, NameValue, NameTypeId) SELECT ContributorId, ContributorName, 1 -- 1替换为ContributorNameTypes中"个人"类型的ID FROM Contributors
2. 导入配偶名称
INSERT INTO ContributorNames (ContributorId, NameValue, NameTypeId) SELECT c.ContributorId, cs.SpouseName, 2 -- 2替换为"配偶"类型的ID FROM Contributors c INNER JOIN ContributorSpouses cs ON c.ContributorId = cs.ContributorId
3. 导入企业名称
INSERT INTO ContributorNames (ContributorId, NameValue, NameTypeId) SELECT c.ContributorId, cb.BusinessName, 3 -- 3替换为"企业"类型的ID FROM Contributors c INNER JOIN ContributorBusinesses cb ON c.ContributorId = cb.ContributorId
三、配置表单下拉框
- 设置下拉框的行来源为以下查询:
SELECT ContributorId, NameValue FROM ContributorNames ORDER BY NameValue
- 调整下拉框属性:
- 列数:设为2
- 列宽:
0cm;5cm(隐藏第一列的ContributorId,仅显示名称) - 控件来源:绑定到Donations表的
ContributorId字段
四、进阶优化(可选)
如果需要区分名称类型,可修改行来源查询,在名称后追加类型标识:
SELECT ContributorId, NameValue & " (" & nt.TypeName & ")" AS DisplayName FROM ContributorNames cn INNER JOIN ContributorNameTypes nt ON cn.NameTypeId = nt.NameTypeId ORDER BY DisplayName
此时下拉框显示DisplayName,仍绑定ContributorId即可。
内容的提问来源于stack exchange,提问作者phooBarred
相关产品推荐
相关产品推荐

