1

首先,总的来说,我对 Access 和数据库还很陌生。我正在尝试设计一个数据库,使我的公司能够在物品通过我们的运输、接收和检验区域时精确跟踪它们。目前,我有一个链接的 Excel 表,它每天通过公司数据提取进行更新。然后我运行更新查询以仅将新记录附加到数据库主表中。要附加的表字段是:Part_Number、Lot_Number、Item_Description、PO_Number、ProjectID、Project_Name、Quantity、Reason_Code 和 Dock_Receipt_Date。

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

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

PS当前的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];
4

1 回答 1

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;

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

于 2013-09-20T20:43:39.937 回答