1

AccessのクエリデザインにORステートメントを書き込もうとしていますが、機能しません。ステートメントは以下のとおりです。

Duration:If([Status2]="Q","2.5 Hours",IIf([Status2]=WS,"4 Hours", IIf([Status2]=MG,"3 Hours 15 Mins",IIf([Status2]=ID,"3.5 Hours"))))

4

2 に答える 2

1

Zaider89 が指摘したようにI、最初のIIf().

また、4 つの異なる値と比較[Status2]しています: Q; WS; MG; ID。これらの値の最初のものを引用符で囲みましたが、他の値は囲みませんでした。これは、db エンジンが引用符で囲まれていない値をパラメーターとして扱い、WS、MG、および ID の値を指定するように要求するのではないかと思います。

最後のIIf()式には「真の部分」が含まれていますが、「偽の部分」は含まれていません。

IIf([Status2]=ID,"3.5 Hours")

これらの問題は解決できますが、代わりにスイッチ機能の使用を検討することをお勧めします。試行の横の列にあるクエリ デザイン グリッドの 1 行で、次の操作を試してくださいIIf()

Duration:Switch([Status2]="Q","2.5 Hours",
[Status2]="WS","4 Hours",
[Status2]="MG","3 Hours 15 Mins",
[Status2]="ID","3.5 Hours")

そのSwitch()アプローチは私には良く見えます。[Status2]ただし、マップされた値用の列と別の列を持つ別のルックアップ テーブルを作成する方が良いと思います。次に、そのテーブルをクエリに結合します。Switch()テーブルを作成した後、クエリで使用するのは簡単で、式を使用したり、ネストした式を使用したりするよりも理解しやすいと思いますIIf()。また、新しい条件を追加する必要がある場合に拡張するのも簡単です。ルックアップ テーブルに行として追加するだけです。

于 2012-05-04T13:07:05.133 に答える
0

それがアクセスデータベースからの直接コピーである場合、最初のIfにIがありません。IFではなくIIFである必要があります。

于 2012-05-04T12:12:34.143 に答える