MAS200 データベースと非同期に動作する Access 2007 データベースがあります。さまざまなオフィスの方針と官僚主義のせいで、ODBC でアクセスが簡単になったにもかかわらず、MAS200 データにアクセスできず、MAS200 から Access にデータ ダンプをインポートする必要があります。これとレポートの実行方法が原因で、ダンプにデータが重複することがあります。
私の解決策は、DATA テーブルと DUMP テーブルを用意することでした。インポートする前に、正しいクエリを見つけて、DUMP からの行が DATA に存在するかどうかを確認する必要があります。
両方のテーブルは次のようになります。さらに、複製とダンプのロジックが完了した後に手動で入力されるいくつかのフィールドが追加されます。
DATA ID / DUMP ID
InvoiceDate
InvoiceNumber
CompanyID
Product
Description
SalespersonID
Quantity
Cost
Price
次のクエリを使用できると思いますが、機能していないようです。
INSERT INTO tblDATA(InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
SELECT tblDUMP(InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
WHERE tblDATA.InvoiceNumber != tblDUMP.InvoiceNumber AND tblDATA.Product != tblDUMP.Product AND tblDATA.Quantity != tblDUMP.Quantity
コードを修正するか、より良い方法を教えてもらえますか?
編集!
この質問を最初に投稿してから、データベースが少し変更されました。私が修正しようとしているクエリは次のとおりです。
INSERT INTO tblSold(InvoiceDate, Invoice, CompanyID, Product, Description, Salesperson, Quantity, Cost, Price)
SELECT tblNewData.InvoiceDate, tblNewData.Invoice, tblNewData.CompanyID, tblNewData.Product, tblNewData.Description, tblNewData.Salesperson, tblNewData.Quantity, tblNewData.Cost, tblNewData.Price
FROM tblNewData FULL OUTER JOIN tblSold ON tblSold.InvoiceNumber = tblNewData.InvoiceNumber AND tblSold.Product = tblNewData.Product AND tblSold.Quantity = tblNewData.Quantity
WHERE tblSold.InvoiceNumber IS NULL AND tblSold.Product IS NULL AND tblSold.Quantity IS NULL