私はMS Accessでシンプルなコンフィギュレータを作成しています。必須と無効の2種類のルールがあります。私はこのSQLを使用し、それが正常に動作し、無効なルールの場合:必須規則についてMsアクセス:JOINとNOT EQUAL演算子を使用したDELETEクエリ
DELETE DISTINCTROW RuntimeBOM.*
FROM CurrentInvalid
INNER JOIN RuntimeBOM ON ([RuntimeBOM].[OPTION] = [CurrentInvalid].[Invalid option])
AND ([RuntimeBOM].[FEATURE] = [CurrentInvalid].[Invalid feature])
WHERE RuntimeBOM.SessionID=fOSUserName();
私はこの1つをしようと試みてきたが、それは、テーブル内の任意のレコードには影響しませんが、確かに、それは実行時エラーを返します。 「3086」(これは、指定されたテーブルから削除することは不可能です):
DELETE DISTINCTROW RuntimeBOM.*
FROM CurrentMandatory
INNER JOIN RuntimeBOM ON (RuntimeBOM.FEATURE = CurrentMandatory.MandatoryFeature)
AND (RuntimeBOM.OPTION <> CurrentMandatory.MandatoryOption)
WHERE RuntimeBOM.SessionID=fOSUserName();
fOSUserNameは()アプリケーションを実行しているコンピュータのユーザー名を取得するために、VBA関数です。このシナリオでは
╔══════════════╗ ╔══════════════════════════════════════════╗ ╔════════════════════════════════════════════╗
║ RuntimeBOM ║ ║ CurrentInvalid ║ ║ CurrentMandatory ║
╟───────┬──────╢ ╟────┬──────┬───────────────┬──────────────╢ ╟────┬──────┬────────────────┬───────────────╢
║FEATURE│OPTION║ ║Feat│Option│Invalid feature│Invalid option║ ║Feat│Option│MandatoryFeature│MandatoryOption║
╠═══════╪══════╣ ╠════╪══════╪═══════════════╪══════════════╣ ╠════╪══════╪════════════════╪═══════════════╣
║FT001 │OP001 ║ ║FTaa│OPaa │FT001 │OP001 ║ ║FTaa│OPaa │FT002 │OP008 ║
║FT001 │OP002 ║ ║FTaa│OPaa │FT001 │OP002 ║ ╚════╧══════╧════════════════╧═══════════════╝
║FT001 │OP003 ║ ║FTaa│OPaa │FT001 │OP004 ║
║FT001 │OP004 ║ ║FTaa│OPaa │FT001 │OP005 ║
║FT001 │OP005 ║ ╚════╧══════╧═══════════════╧══════════════╝
║FT002 │OP006 ║
║FT002 │OP007 ║
║FT002 │OP008 ║
║FT002 │OP009 ║
║FT002 │OP010 ║
╚═══════╧══════╝
は、ユーザーがどこかに「FTAA」と「OPAA」を選択した、そしてこの理由のために、「CurreintINvalid」と「CurrentMandatoryは」このように移入されている。想像します無効なルールのSQLは、FEATUREがFT001でOPTIONが "OP001"、 "OP002"、 "OP004"、 "OP005"( "CurrentInvalid"で定義されている)のRuntimeBOM内のレコードを削除します。必須ルールのSQLは、RuntimeBOM内のFEATUREがFT002、OPTIONが "OP008"( "CurrentMandatory"で定義されている)と等しくないレコードをすべて削除します。 期待される結果:
╔══════════════╗
║ RuntimeBOM ║
╟───────┬──────╢
║FEATURE│OPTION║
╠═══════╪══════╣
║FT001 │OP003 ║
║FT002 │OP008 ║
╚═══════╧══════╝
はありがとうございました!
問題の 'DELETE'クエリの' SELECT'バージョンを確認してください。更新可能なクエリですか?これらの結合されたテーブルまたはクエリは、特に* CurrentMandatory *ですか? – Parfait
あなたの答えをありがとう、彼らはテーブルです、奇妙なことは、最初の削除が正常に動作するということです。一方、第二のノー。 2番目のクエリをSELECTに変換する場合は、それが機能します。 – Axel