快速查找一列中的值,更改另一列中的值

时间:2013-01-04 20:46:24

标签: ms-access lookup

所以当我最初设置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

但这些方法似乎都不可行。我的位置很少,但需要修复很多行...我该如何快速完成?逐行手动更改即使不是几天,也需要数小时。

谢谢!〜

2 个答案:

答案 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字段名称;用你的真名取代。

更新可能不会很快,但希望这不会成为交易破坏者,因为您只需要这样做一次。