我正在使用MS Access 2013中的数据库,该数据库包含大量非规范化数据,我想将它们移出到备用表并将它们用作主表中的查找。但是,当我创建一个查阅列时,MS Access会删除数据,并且手动重置每条记录的数据太多了。
Access 2013中是否有办法在不丢失数据的情况下创建此类查找?
请不要评论在Access中使用查找表的方式不好。我已经阅读了下面的帖子,我不同意那里的大部分观点,其中一些只是错误的。
http://access.mvps.org/access/lookupfields.htm
以下是我的数据示例。我需要将第二和第三个字段提取到其他表。如果我能和他们一起做,我可以和其他人一起做。
目前,它在字段中以文本形式存储。我想删除它们并用FK id替换它们。
答案 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列。