1

フォームに従ってクエリ出力を取得するために、ms-access でフォームを作成しました。

アクセスクエリのSQLは次のとおりです。

SELECT w.* FROM work_log1 AS w, [task name] AS t WHERE t.task_name=forms!
[Accenture QC]!combo4 And t.task_id=w.task_name And w.activity_start_date Between  
forms ![Accenture QC]!text0 And forms![Accenture QC]!text11 
and w.[TAT] = forms![Accenture QC]!combo46

これですべて正常に動作していますが、combo46 が空白の場合は最後のフィルター行を削除したいと考えています。

私はどういうわけか次のようにSQLを作成しました:

and iif(forms![Accenture QC]!combo46 = '', t.task_id=w.task_name ,
t.task_id=w.task_name   and w.[TAT] = forms![Accenture QC]!combo46)

これは正しい方法ですか? この TAT フィルターのみを適用する場合はどうなりますか?

つまり、次のようなものを書く方法です。

"SELECT w.* FROM work_log1 AS w where (w.[TAT] = forms![Accenture QC]!combo46 
OR forms![Accenture QC]!combo46 Is Null)" 

ありがとう

4

1 に答える 1

1

現在、WHERE句の最後の部分は...

and w.[TAT] = forms![Accenture QC]!combo46

あなたの目標がw.[TAT]いつcombo46Nullであるかという制約を無視することである場合は、これを試してください:

AND (w.[TAT] = forms![Accenture QC]!combo46
    OR forms![Accenture QC]!combo46 Is Null)

" blank " が Null 以外の何かを意味する場合、これは単純ではありません。たとえば、空の (長さゼロの) 文字列または空白文字です。これらすべての可能性を 1 つの式で捉えることができます。

Len(Trim(forms![Accenture QC]!combo46 & "")) = 0

質問のクエリの最新バージョンでは...

SELECT w.*
FROM work_log1 AS w
where
       w.[TAT] = forms![Accenture QC]!combo46 
    OR Len(Trim(forms![Accenture QC]!combo46 & "")) = 0
于 2012-09-13T16:12:52.780 に答える