我正在尝试在 Access 中创建两个表之间的关系。在一张表中,我有客户,在另一张表中,我有按邮政区域划分的区域。在客户表中,我有所有常用的地址信息和一个简单的计算字段,该字段只是国家/地区代码和邮政编码的前 2 个字符。例如,英国、伯明翰 1 为“UKB1”,英国赫尔为“UKHU”。在另一个表中,我们有这 4 个字符代码(不像客户表那样计算)以及区域号码和工作人员。
Access 指出它无法创建关系,因为它来自计算字段。
如何解决这个问题,而无需手动将数据输入到客户表中?
我只会使用代码来维护额外的列。因此,在允许编辑该客户的表单中,只需输入邮政编码或该表单上该控件的更新后事件的任何字段,将前 2 个字符“推入”该国家/地区代码列。
例如,像这样:
Private Sub PostalCode_AfterUpdate()
Me!CountryCode = Left(Me.PostalCode, 2)
End Sub
现在,上面将自动处理您输入的任何编辑或新记录。
但是,这并没有涉及现有记录。为此,您需要运行一次更新查询来“填写”现有数据的这个新列。
因此,启动查询生成器,添加该表,并将查询类型更改为“更新查询”。
你得到/拥有这样的东西:
当然,我想你也可以按 Ctrl-G 进入命令(立即)窗口,然后输入:
currentdb.Execute "UPDATE tblHotels SET CountryCode = Left([postalCode],2)"
立即窗口或查询生成器。您只需添加新列并填写即可。
如前所述,通过将简单的更新后事件附加到编辑表单中的后置代码,那么从那时起,该值将得到维护,无需任何额外的努力。
现在您有了一个普通列,那么您可以自由地构建查询等,这将允许连接第二个 PostalRegion 表。
我怀疑(怀疑)您需要强制执行 RI,但无论如何,有了真实的国家/地区代码列,您就可以自由地加入您构建的任何查询的“区域”表中。