阻止Access更新查询覆盖不同的记录?

时间:2013-09-20 17:11:47

标签: sql ms-access

首先,我对Access和数据库一般都是新手。我正在尝试设计一个数据库,这将允许我的公司在通过我们的运输,接收和检查区域时精确跟踪物品。目前,我有一个链接的Excel工作表,每天通过公司数据提取更新。然后,我运行更新查询以仅将新记录附加到数据库主表。要追加的表字段是:Part_Number,Lot_Number,Item_Description,PO_Number,ProjectID,Project_Name,Quantity,Reason_Code和Dock_Receipt_Date。

我遇到的问题是,可以有多个记录,其中包含相同值字段的任意组合,并且至少有一个字段使它们不同(Excel工作表中不存在真正的重复记录),以及更新查询时运行时,具有相同值字段的所有记录都将成为真正的重复项。也就是说,当db为空时,第一个更新查询会附加所有不同的记录。在第二次和后续更新期间,具有相同部件号,批号或PO号的记录......即使它们是不同的......也会被覆盖并变为重复。我想知道是否有办法在将新记录附加到数据库时使用更新查询保留不同的记录;或者如果有办法只追加新记录,忽略现有记录?

作为一个注释,我尝试在Excel工作表中添加索引,但是当我运行更新查询时,数据库会增加数百条记录,因为它每次都将Excel记录视为新记录。

P.S。当前的SQL是:

UPDATE [Tbl 01 RDM DB] 
 RIGHT JOIN [Tbl 02a Pending Inspection Items] 
         ON [Tbl 01 RDM DB].Part_Number = [Tbl 02a Pending Inspection Items].Part_Number 
        SET [Tbl 01 RDM DB].Lot_Number = [Tbl 02a Pending Inspection Items].[Lot_Number]
          , [Tbl 01 RDM DB].Part_Number = [Tbl 02a Pending Inspection Items].[Part_Number]
          , [Tbl 01 RDM DB].Item_Desc = [Tbl 02a Pending Inspection Items].[Item_Desc]
          , [Tbl 01 RDM DB].PO_Number = [Tbl 02a Pending Inspection Items].[PO_Number]
          , [Tbl 01 RDM DB].[Project/CID] = [Tbl 02a Pending Inspection Items].[Project/CID]
          , [Tbl 01 RDM DB].Dock_Receipt = [Tbl 02a Pending Inspection Items].[Dock_Receipt]
          , [Tbl 01 RDM DB].Reason_Code = [Tbl 02a Pending Inspection Items].[Reason_Code]
          , [Tbl 01 RDM DB].QTY = [Tbl 02a Pending Inspection Items].[QTY]
          , [Tbl 01 RDM DB].Project_Name = [Tbl 02a Pending Inspection Items].[Project_Name];

1 个答案:

答案 0 :(得分:0)

不,完全没有。我没有对Excel表格做任何事情。这是我已经开始工作的代码。

  INSERT INTO [Tbl 01 RDM DB]
(Part_Number, Lot_Number, [Project/CID], Project_Name, Dock_Receipt, Item_Desc, QTY, Reason_Code)
SELECT 
[Tbl 02 Inspection Items].Part_Number, 
[Tbl 02 Inspection Items].Lot_Number, 
[Tbl 02 Inspection Items].[Project/CID], 
[Tbl 02 Inspection Items].Project_Name, 
[Tbl 02 Inspection Items].Dock_Receipt, 
[Tbl 02 Inspection Items].Item_Desc, 
[Tbl 02 Inspection Items].QTY, 
[Tbl 02 Inspection Items].Reason_Code
FROM [Tbl 02 Inspection Items] 
LEFT JOIN [Tbl 01 RDM DB] 

下面,我试图只插入与指定字段组合相关的唯一记录。

ON 
[Tbl 02 Inspection Items].Part_Number <> [Tbl 01 RDM DB].Part_Number
AND [Tbl 02 Inspection Items].Lot_Number <> [Tbl 01 RDM DB].Lot_Number
AND [Tbl 02 Inspection Items].[Project/CID] <> [Tbl 01 RDM DB].[Project/CID]
AND [Tbl 02 Inspection Items].Project_Name <> [Tbl 01 RDM DB].Project_Name
AND [Tbl 02 Inspection Items].Dock_Receipt <> [Tbl 01 RDM DB].Dock_Receipt
AND [Tbl 02 Inspection Items].QTY <> [Tbl 01 RDM DB].QTY;

当我使用空白数据库运行查询时,它可以正常工作。但是后来的执行会产生上述错误。

相关问题