创建与计算字段的关系

问题描述 投票:0回答:1

我正在尝试在 Access 中创建两个表之间的关系。在一张表中,我有客户,在另一张表中,我有按邮政区域划分的区域。在客户表中,我有所有常用的地址信息和一个简单的计算字段,该字段只是国家/地区代码和邮政编码的前 2 个字符。例如,英国、伯明翰 1 为“UKB1”,英国赫尔为“UKHU”。在另一个表中,我们有这 4 个字符代码(不像客户表那样计算)以及区域号码和工作人员。

Access 指出它无法创建关系,因为它来自计算字段。

如何解决这个问题,而无需手动将数据输入到客户表中?

database ms-access database-design
1个回答
1
投票

我只会使用代码来维护额外的列。因此,在允许编辑该客户的表单中,只需输入邮政编码或该表单上该控件的更新后事件的任何字段,将前 2 个字符“推入”该国家/地区代码列。

例如,像这样:

Private Sub PostalCode_AfterUpdate()

    Me!CountryCode = Left(Me.PostalCode, 2)


End Sub

现在,上面将自动处理您输入的任何编辑或新记录。

但是,这并没有涉及现有记录。为此,您需要运行一次更新查询来“填写”现有数据的这个新列。

因此,启动查询生成器,添加该表,并将查询类型更改为“更新查询”。

你得到/拥有这样的东西:

enter image description here

当然,我想你也可以按 Ctrl-G 进入命令(立即)窗口,然后输入:

currentdb.Execute "UPDATE tblHotels SET CountryCode = Left([postalCode],2)"

立即窗口或查询生成器。您只需添加新列并填写即可。

如前所述,通过将简单的更新后事件附加到编辑表单中的后置代码,那么从那时起,该值将得到维护,无需任何额外的努力。

现在您有了一个普通列,那么您可以自由地构建查询等,这将允许连接第二个 PostalRegion 表。

我怀疑(怀疑)您需要强制执行 RI,但无论如何,有了真实的国家/地区代码列,您就可以自由地加入您构建的任何查询的“区域”表中。

© www.soinside.com 2019 - 2024. All rights reserved.