2009-05-05 180 views
1

我有一个电子表格可以转换为Access数据库。我有一列输入的客户名称,我想用我们的会计系统中适当的客户编号替换。从查询查询中更新查询

我创建了一个包含客户信息的表格和一个查询,显示需要将哪些ID插入到源数据中。我在找的是:

UPDATE tblStarting_Data 
SET CustomerID=x 
WHERE TEMPCustomer=y 

其中X和Y来自qryIDPerCustomer。

我可以使用循环吗?我如何参考另一个查询?

回答

2

在MS Access另一种可能性(从托默勒格答案借来的对象名称):

UPDATE tblStarting_Data, qryIDPerCustomer 
SET tblStarting_Data.CustomerID=qryIDPerCustomer.CustomerID 
WHERE tblStarting_Data.TEMPCustomer=qryIDPerCustomer.CustomerName 
1

我想加盟将帮助您:

UPDATE 
    tblStarting_Data AS sd 
    INNER JOIN qryIDPerCustomer AS qc ON sd.TEMPCustomer = qc.CustomerName 
SET 
    sd.CustomerID = qc.CustomerID; 

这可表示为相关子查询,以及(尽管联接语法为首选):

UPDATE 
    tblStarting_Data 
SET 
    CustomerID = (
    SELECT CustomerID 
    FROM qryIDPerCustomer 
    WHERE CustomerName = tblStarting_Data.TEMPCustomer 
) 

无需一个循环,两个语句将一步更新tblStarting_Data中的所有记录。

+0

我不能让你的方法工作...这是有道理的,当我读了它,但它的代码刚刚获得不执行。 – NickSentowski 2009-05-05 16:19:03

+1

ACE/Jet不支持ACE/Jet(即使在它自己的ANSI-92查询模式下),您的相关子查询语法(尽管是有效的标准SQL-92语法) – onedaywhen 2009-05-06 07:17:29