MSAccessクエリの条件として次を実行しようとしています。基本的に私がやりたいことは次のとおりです。
私の現在の式ではエラーは発生しませんが、結果も生成されません。式のTRUEとFALSEの半分はそれ自体で正常に機能しますが、iif式に結合すると機能しません。
Like IIf([Forms]![F_leg_reg]![Check25]=True,Like [Forms]![F_leg_reg]![Combo9] Or "" Or Is Null,Like [Forms]![F_leg_reg]![Combo9])
誰かが私がここで間違っていることを教えてもらえますか?前もって感謝します。
非常に多くのlikes
が必要かどうかわからないため、戻り値にor
論理演算子を使用していますが意味がありません
IIF (condition, value-if-true, value-if-false)
そう..
Like IIF ([forms]![foo].[text1] = "1" OR [forms]![foo].[text2] = "1", 'bar', 'foobar')
いずれかの条件が満たされた場合、IIFは「bar」を返します。それ以外の場合は「foobar」を返します。
必要に応じてネストできます
Like IIF ([forms]![foo].[text1] = "1" OR [forms]![foo].[text2] = "1", 'bar',
IIF ([forms]![foo].[text1] = "2" AND [forms]![foo].[text2] = "2", 'foobar', null)
)
いずれかの条件が満たされた場合、IIFは「bar」を返します。それ以外の場合は、text1
およびtext2
は「2」である場合は「foobar」を返し、そうでない場合はnull
を返します。
お役に立てれば
私はこの議論に非常に遅れていますが、同じ問題に遭遇したときにこの投稿を見つけました。それ以来、私はそれを解決し、共有したいと思います。
問題は、Iifステートメントの場所です。 Accessを使用しているため、クエリデザインビューの[基準]行にIifステートメントを配置している可能性があります。それを削除します。代わりに、Iifステートメントをクエリ内の独自のフィールドにする必要があります。
また、Nullと「*」で使用する演算子にも十分注意する必要があります。構文は非常に扱いにくいです。
新しいクエリフィールドに、次のように入力します。
IIf([Combo_Box] Is Null,[Field1] Is Null Or [Field1] Like "*",[Field1]=[Combo_Box])
次に、そのフィールドの基準を<> Falseに設定します。
SQLは次のようになります。
SELECT [Field1], [Field2], etc
FROM Table1
WHERE (IIf([Combo_Box] Is Null,[Field1] Is Null Or [Field1] Like "*",[Field1]=[Combo_Box])<>False);
お役に立てれば!パーティーに遅れてすみません!.
IIf()式内でキーワードLikeを繰り返しています。それはうまくいきません。 IIf()を修正することもできますが、私は別のアプローチを使用します...これは私の脳によりよく適合します。
これにより、チェックボックスがオンの場合はすべての行が返されますが、チェックボックスがオフの場合は行が返されません。
SELECT a_field, another_field, field_2_search
FROM YourTable
WHERE [Forms]![F_leg_reg]![Check25]=True;
チェックボックスがオフの場合、行をfield_2_search値にコンボの値が含まれる行に制限します。
SELECT a_field, another_field, field_2_search
FROM YourTable
WHERE
[Forms]![F_leg_reg]![Check25]=False
AND field_2_search Like "*" & [Forms]![F_leg_reg]![Combo9] & "*";
ただし、クエリは2つではなく、1つだけ必要なので、これらのWHERE句をORと組み合わせます。
SELECT a_field, another_field, field_2_search
FROM YourTable
WHERE
[Forms]![F_leg_reg]![Check25]=True
OR (
[Forms]![F_leg_reg]![Check25]=False
AND field_2_search Like "*" & [Forms]![F_leg_reg]![Combo9] & "*"
);