MS Access 03 - 更新查询条件的一个字段中的多个“ifs”?

时间:2009-07-21 23:50:57

标签: sql database excel ms-access ms-office

我可以运行更新查询,并在一个字段中运行多个更新,例如:

“joe doe”更新至334& “barry davis”更新为456等

基本上我想将名称转换为数字(在我的情况下,它将是员工ID#),我有大约500名员工,所以一次只有一个是不可能的。该表是从excel导入的,我不知道如何做这个导入前的ethier!

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

虽然可以在Access中使用多个Iif语句,但您可能希望使用Access中的更新查询来执行此操作。

如果没有更详细的数据源,很难确定 - 我假设您已经在Access中列出了一个表,其中列出了用户名到ID(我称之为用户)。如果您还没有列出用户名和ID的Access表,则需要获取一个。

我还假设您已将要更新的数据从Excel导入到名为ExcelImport的表中。

显然,您需要将我的示例中使用的表名替换为您的实际表名。

不是替换Excel数据中的用户名,而是在ExcelImport上添加新列以保存用户ID可能更明智。

  1. 创建新查询(“在设计视图中创建新查询”)

  2. 将Users和ExcelImport表添加到您的查询

  3. 通过在Users表上的“用户名”字段之间单击并拖动,然后通过ExcelImport上的“用户名”字段进行释放,在表之间创建链接。这会将这两个表链接在一起。

  4. 将查询类型更改为更新(查询>更新查询)

  5. 双击ExcelImport用户名字段(或其他用户ID字段,如果您正在使用它)以将其定位以进行更新。它应该出现在查询设计器的下半部分的第一列中。

  6. 在此列的“更新至:”字段中,键入[用户]。[用户ID]

  7. 运行查询。将出现一个消息框,要求您确认是否要更新 n 行。单击“确定”进行确认。

  8. 鉴于您的数据来自Excel,您应该检查所有用户ID是否已正确设置,因为Excel数据中的“Joe Doe”可能会在users表中存储为“Joseph Doe” - 其中例如,您需要手动编辑Excel数据才能获得匹配。

答案 1 :(得分:1)

  

我有大约500名员工,所以一个人   时间有点不可能

绝对:)

使用标准问题的唯一INTEGER值序列表来考虑这一点:

SELECT SWITCH(
              seq = 1, 1, 
              seq = 2, 2, 
              seq = 3, 3, 
              seq = 4, 4, 
              seq = 5, 5, 
              seq = 6, 6, 
              seq = 7, 7, 
              seq = 8, 8, 
              seq = 9, 9, 
              seq = 10, 10, 
              seq = 11, 11, 
              seq = 12, 12, 
              seq = 13, 13, 
              TRUE, 999
             ) AS seq_1
FROM Sequence;

超过14个案例会产生错误,“表达式在查询表达式中过于复杂”。所以我认为你不会接近500个案件!

最好将其设为查找表。