1

まず、私は Access とデータベース全般についてかなり初心者です。発送、受け取り、検査エリアを通過する際に、会社が商品を正確に追跡できるようにするデータベースを設計しようとしています。現在、会社のデータ抽出を介して毎日更新されるリンクされた Excel シートがあります。次に、更新クエリを実行して、新しいレコードのみをデータベースのプライマリ テーブルに追加します。追加するテーブル フィールドは、Part_Number、Lot_Number、Item_Description、PO_Number、ProjectID、Project_Name、Quantity、Reason_Code、Dock_Receipt_Date です。

私が抱えている問題は、同じ値のフィールドと、それらを区別する少なくとも 1 つのフィールドの任意の組み合わせを持つ複数のレコードが存在する可能性があることです (Excel シートに真の重複レコードは存在しません)。更新クエリを実行すると、すべて同じ値のフィールドを持つレコードは真の重複になります。つまり、データベースが空の場合、最初の更新クエリはすべての個別のレコードを追加します。2 回目以降の更新では、同じ部品番号、ロット番号、または PO 番号のレコードは、別のものであるにもかかわらず、上書きされて重複します。データベースに新しいレコードを追加しながら、更新クエリで個別のレコードを保持する方法があるかどうか疑問に思っています。または、既存のレコードを無視して、新しいレコードのみを追加する方法がある場合は?

注として、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 に答える