これは何回か尋ねられましたが、何らかの理由で解決策が動作しないことがわかりました。Accessでレコードを追加するときに重複を避ける
データベースレイアウト:FP番号、カウント、場所、MODEL_ID、PK:
私は表1のデータは、フォーム(スキャナIBOB)*上の別のテーブル/サブフォームから引き出さなっている(Scanner_Location)が列を保持してい(FP#、Location PK-SN) 表3(Scanner_Model)サブフォームに表示される最後のデータ列を保持します。
フォームの1つのセクションにFP#と場所を入力し、サブフォームに移動して複数のモデルを選択し、カウント(テキストボックス)を入力します。選択されると、彼らは私の質問を実行する '更新'ボタンをクリックします。 (そのうちの私は更新と追加クエリを持っています)
問題は、単に更新クエリを使用してレコードを追加しないということです。 Appendクエリを使用すると、既存のデータの複製が作成されます。
はここでフローが行われる方法は次のとおりです。
ユーザーは4のカウントと100クリック更新のFP番号とモデル1とモデル2を選択します。 クエリが更新され、情報が正しく入力されます。
ユーザー同じFP番号と数を持つ同じモデル(Model_Select)をもう一度選択すると、Table1には別の主キーを使用して同じ情報が再度入力されます。
目標:
追加クエリは、既存のデータの複製を作成します。私は私の更新をしたいおよび/またはにクエリを追加します。既存のデータを
アップデート - がまだ存在していないすべてのレコードを追加し、同じFPの#を使って何を探して(MODEL_IDとFP#を見る)
INSERT INTO Scanner_Location (Model_ID, FootPrints_Num, Location_ID, Scanner_Loc_Cnt)
SELECT Scanner_Model.Model_ID, [Forms]![Scanner_IBOB]![fpNum_txt] AS [FP#],
[Forms]![Scanner_IBOB]![Location_Cbo_main] AS Location,
[Forms]![Scanner_IBOB]![Scanner_Loc_CntTxt] AS [Count]
FROM Scanner_Detail
RIGHT JOIN Scanner_Model ON Scanner_Detail.Model_ID = Scanner_Model.Model_ID
WHERE (((Scanner_Model.SM_Acc_Select)=True)
AND ((NOT Exists (SELECT * FROM Scanner_location
WHERE (((Forms!Scanner_IBOB!fpNum_txt)=Forms!Scanner_IBOB!fpNum_txt)
And ((Scanner_Model.SM_Acc_Select)=True));))=False));
上記は私の追加クエリです。 http://stackoverflow.com/questions/19837911/appending-into-another-table-and-avoiding-duplicates 私を近づけますが、AND NOT EXISTSは機能していないか、正しく理解していません。 – Zdoghype