0

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
4

2 に答える 2

0

Accessは、完全外部結合をサポートしていません。ここで説明するように、左結合と結合を使用する必要がありました:http: //bytes.com/topic/access/answers/642644-excel-vlookup-full-outer-join

于 2009-07-08T19:22:55.087 に答える
0

友人が私に素晴らしい答えを書いてくれました。

INSERT INTO tblDATA (InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
SELECT tblDUMP.InvoiceDate, tblDUMP.InvoiceNumber, tblDUMP.CompanyID, tblDUMP.Product, tblDUMP.Description, tblDUMP.SalespersonID, tblDUMP.Quantity, tblDUMP.Cost, tblDUMP.Price
FROM tblDUMP FULL OUTER JOIN tblDATA ON tblDUMP.InvoiceNumber = tblDATA.InvoiceNumber AND tblDUMP.Product = tblDATA.Product AND tblDUMP.Quantity = tblDATA.Quantity
WHERE tblDATA.InvoiceNumber IS NULL AND tblDATA.Product IS NULL AND tblDATA.Quantity IS NULL

Access では構文が完全ではないことに注意してください。

私は彼の推論を理解するのに役立ついくつかの素晴らしい研究を見つけました: Left, Right, Outer and Inner Joins の違いは何ですか? https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

今度は、Access 2007 の構文について助けが必要です。

于 2009-07-08T16:40:56.600 に答える