所以当我最初设置Access表并需要帮助修复它时(尽可能容易)我犯了一个小错误。
我有一个名为Locations
的表(小表,10行)和另一个名为Encounter Data
的表(大表,100,000行)。 Encounter Data
的查阅列指向Locations
。
我犯的错误是将位置名称而不是其主键存储在Encounter Data
列中。现在,显然,如果我在Locations
表中更改了特定项的名称,Encounter Data
中的查找将失败。我应该关注的是存储主键(然后我可以自由编辑所有Locations
信息)。
我要解决这个问题。
但我不知道如何在新列中插入正确的ID代替名称。
我的想法是简单地添加一个新列,正确创建查找(存储主键),然后执行以下任一操作:[1]按位置对Encounter Data
进行排序并快速拖动/自动执行像我在excel中填充以匹配存储名称的正确ID或[2]执行查找/替换...只在LocationWhoopsColumn
中找到值并在LocationCorrectColumn
中输入正确的ID
但这些方法似乎都不可行。我的位置很少,但需要修复很多行...我该如何快速完成?逐行手动更改即使不是几天,也需要数小时。
谢谢!〜
答案 0 :(得分:2)
在LocationId
中创建新列Encounter Data
,然后运行
UPDATE [Encounter Data] a INNER JOIN Locations b ON a.LocationName = b.Name
SET a.LocationId = b.id
检查结果,然后在满意时删除列LocationName。
答案 1 :(得分:1)
“ ...在LocationWhoopsColumn中找到一个值,并在LocationCorrectColumn中输入正确的ID ”
使用DLookup
根据位置名称字段与Locations
的匹配,从LocationWhoopsColumn
检索主键值。
UPDATE YourBigTable
SET LocationCorrectColumn =
DLookup(
"pkey",
"Locations",
"location_name ='" & LocationWhoopsColumn & "'");
我猜到“pkey”和“location_name”为Locations
字段名称;用你的真名取代。
更新可能不会很快,但希望这不会成为交易破坏者,因为您只需要这样做一次。