Access中如何在不手动录入数据的前提下,绕过计算字段限制创建表间关系
Access计算字段无法创建关系的解决方法(无需手动录入)
方法1:用生成表查询把计算字段转为物理存储字段
- 新建选择查询,包含客户表所有字段,同时加入计算逻辑生成区域编码(比如表达式:
[国家码] & Left([邮编],2)) - 切换到「生成表查询」模式,指定生成新表的名称(比如
客户_带区域编码表) - 运行查询生成新表,新表中的区域编码是物理存储的字段,而非计算字段
- 用新表的区域编码字段和区域表创建正式关系,后续可以通过查询关联原客户表和新表,保证数据同步
方法2:用查询作为中间层实现数据关联(无需创建表间关系)
直接创建SQL查询,把计算字段作为关联条件,替代表间关系:
SELECT 客户表.*, 区域表.区域编号, 区域表.员工信息 FROM 客户表 INNER JOIN 区域表 ON ([客户表].[国家码] & Left([客户表].[邮编],2)) = 区域表.编码;
这个查询可以直接作为表单、报表的数据源,实现两个表的数据关联,无需手动维护任何字段。
方法3:用VBA自动同步物理字段
- 先在客户表中新增一个短文本类型的
区域编码字段 - 打开客户表的表单设计视图,添加
After Update和After Insert事件的VBA代码:
Private Sub Form_AfterUpdate() Me!区域编码 = Me!国家码 & Left(Me!邮编, 2) End Sub Private Sub Form_AfterInsert() Me!区域编码 = Me!国家码 & Left(Me!邮编, 2) End Sub
- 保存代码后,新增或修改客户数据时,
区域编码字段会自动计算并存储,之后就能用这个字段和区域表创建正常的表间关系
内容的提问来源于stack exchange,提问作者MBrann
相关产品推荐
相关产品推荐

