创建一个新数据已存在的查找表

时间:2013-10-28 00:11:01

标签: ms-access ms-access-2013

我正在使用MS Access 2013中的数据库,该数据库包含大量非规范化数据,我想将它们移出到备用表并将它们用作主表中的查找。但是,当我创建一个查阅列时,MS Access会删除数据,并且手动重置每条记录的数据太多了。

Access 2013中是否有办法在不丢失数据的情况下创建此类查找?

请不要评论在Access中使用查找表的方式不好。我已经阅读了下面的帖子,我不同意那里的大部分观点,其中一些只是错误的。

http://access.mvps.org/access/lookupfields.htm

以下是我的数据示例。我需要将第二和第三个字段提取到其他表。如果我能和他们一起做,我可以和其他人一起做。

enter image description here

目前,它在字段中以文本形式存储。我想删除它们并用FK id替换它们。

1 个答案:

答案 0 :(得分:1)

您可以创建第二个表并将数据添加到表中。然后更新第一个表以使记录彼此匹配

假设你有下表:

CustOrders
ID       Customer     DateOrdered
123      K-Mart       01/01/2013
124      K Mart       01/05/2013
125      Walmart      02/05/2013
126      Walmart      03/07/2013
127      Miejers      03/11/2013
128      K-Mart       03/12/2013

通过执行以下操作,您可以找到Customers表中的所有CustOrders

SELECT DISTINCT Customer From CustOrders

然后在下表中为每个创建一条记录:

Customers
ID       Customer
1        K-Mart
2        Walmart
3        Miejers

然后,您可以通过执行以下操作更新CustOrders表:

UPDATE CustOrders SET Customer = 1 WHERE Customer = 'K-Mart' OR Customer = 'K Mart'

当然,您必须为每个不同的客户执行此操作。

然后,如果您愿意,可以将Customer表格中CustOrders字段的数据类型更改为Long Integer

最后,我会在任何具有以下RowSource的条目/编辑表单上创建一个组合框:

SELECT ID, Customer FROM Customers ORDER BY Customer

将组合框设置为从列表限制并绑定到第1列。