MSAccess フォームの ComboBox の行ソースとして使用する SQL ステートメントを定義しようとしています。SQL は、特定のテーブル フィールドがユーザーによって設定されたバリアント パラメーター varS と一致するテーブル tblI からレコードを選択する必要があります。ただし、varS が Null であるか、別のテーブル tblS に存在しない場合、SQl は tblI 内のすべてのレコードを選択する必要があります。
これの最初の部分をコーディングできます (varS が一致するか、null です)。
SELECT tblI.ID, tblI.S FROM tblI WHERE ((tblI.S = varS) OR (varS Is Null)) ORDER BY tblI.ID;
私が苦労しているのは、最後の要素を組み込むことです(varSはtblSに存在しません)。tblS に varS がないかどうかのテストをコーディングできます。
Is Null(DLookup("[tbls.ID]","tblS","[tblS.ID]= " & varS))
しかし、これをSQL文に組み込む方法がわかりません。これは機能するはずですか?
SELECT tblI.ID, tblI.S FROM tblI WHERE tblI.S = varS OR varS Is Null OR DLookup("[tbls.ID]","tblS","[tblS.ID]= " & varS) Is Null ORDER BY tblI.ID;
クエリとして実行すると、varS の値に関係なく、tblS のすべてのレコードが返されます。
テーブル構造:
tblI には、Autonumber ID と Long S の 2 つのフィールドが含まれています
tblS には 1 つのフィールド、Autonumber ID が含まれます