【问题标题】:How to use DLookup In an Update Query如何在更新查询中使用 DLookup
【发布时间】:2014-11-14 15:14:04
【问题描述】:

我有两个表:“PartNumberX”和“MasterPartTable”。我的最终目标是使用查询从“MasterPartTable”中提取某些字段以获取唯一部件号列表(“MasterPartTable”有重复项)。除了使用SELECT DISTINCT 方法的一个之外,我能够成功地获取我想要的所有字段。不幸的是,最后一列“零件名称”是(由其他人)草率地创建的,并且某些零件名称带有逗号,其中相同的零件编号可能不是例如。 “Assembly, The Thing”和“Assembly The Thing”都有相同的部件号,所以我只想要其中一个。我的想法是,我将能够将好的数据插入到表中,然后运行更新查询,该查询使用DLookup 使用“PartNumberX”中的零件编号查找零件名称,以从中查找相应的零件名称“MasterPartTable”,但我似乎无法让它工作。

当我使用下面的更新查询时,它返回的空白字段数量与“PartNumberX”中的空白字段数量相同。

 UPDATE PartNumberX 
 SET PartNumberX.[Part Name] = DLookUp("[MasterPartTable].[Part_Name]","MasterPartTable","MasterPartTable.Part_Number = PartNumberX.Part_Number");

我在这里遗漏了什么还是有其他方法可以做到这一点?我知道我可以使用 VBA 并单独滚动浏览每个字段来执行此操作,但我更喜欢更快的查询。

编辑-

使用 HansUp 的第二种方法得到以下结果:

UPDATE MasterpartsTable INNER JOIN PartNumberX ON MasterpartsTable.Part_Number= PartNumberX.Part_Number SET PartNumberX.[Part Name] = [MasterpartsTable].[Part_Name];

这会导致空查询。

编辑2-

实际上,我只是运行了该死的东西,它运行良好!我不明白为什么预览是空的,但不管它是否有效。

【问题讨论】:

    标签: sql ms-access ms-access-2007


    【解决方案1】:

    DLookup 标准选项 ...

    "MasterPartTable.Part_Number = PartNumberX.Part_Number"
    

    ... 引用字段的名称 (PartNumberX.Part_Number)。您需要该字段的值而不是其名称。

    使用SELECT 查询来计算逻辑和语法。在您返回正确的数据后,您可以调整为 UPDATE 查询。

    如果Part_Number 是数字数据类型...

    SELECT
        [Part Name],
        Part_Number,
        DLookUp(
            "Part_Name",
            "MasterPartTable",
            "Part_Number = " & Part_Number
        ) AS master_part_name
    FROM PartNumberX;
    

    如果Part_Number 是文本数据类型,请包含引号...

    "Part_Number = '" & Part_Number & "'"
    

    但是,我怀疑您可以通过加入这两个表来避免DLookup。如果此SELECT 查询正确对齐数据,请将其转换为UPDATE

    SELECT
        p.[Part Name],
        p.Part_Number,
        m.Part_Number,
        m.Part_Name
    FROM
        PartNumberX AS p
        INNER JOIN MasterPartTable AS m
        ON p.Part_Number = m.Part_Number;
    

    基于INNER JOINUPDATE 可能比DLookup 版本快得多,尤其是在连接字段(Part_Number) 被索引的情况下。

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2018-10-23
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多