0

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 が含まれます

4

2 に答える 2