Accessのクエリ設計でORステートメントを作成しようとしていますが、動作していません!以下 statementis:アクセスクエリ条件付きの場合
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"))))
Accessのクエリ設計でORステートメントを作成しようとしていますが、動作していません!以下 statementis:アクセスクエリ条件付きの場合
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"))))
それがあなたのアクセスのデータベースから直接コピーである場合は、最初にオンの場合、私が欠けています。 IFではなくIIFでなければなりません。
Zaider89が指摘しているように、最初のIIf()
からI
を削除しました。
また、[Status2]
と4つの異なる値を比較しています。Q; WS; MG; ID。これらの値の最初の値は引用符で囲みますが、他の値は囲まないでください。これは、dbエンジンが引用符で囲まれていない値をパラメータとして扱い、WS、MG、およびIDの値を指定するよう求めていると思わせます。あなたはこれらの問題を解決することができ
IIf([Status2]=ID,"3.5 Hours")
が、私はあなたの代わりにSwitch Functionを使用することを検討してお勧め:
あなたIIf()
式の最後には、「真の部」が、ノー「偽の一部」を含みます。 IIf()
試行の横の列にあるクエリデザイングリッドの次の行を1行で試してみてください。
Duration:Switch([Status2]="Q","2.5 Hours",
[Status2]="WS","4 Hours",
[Status2]="MG","3 Hours 15 Mins",
[Status2]="ID","3.5 Hours")
そのSwitch()
のアプローチが私には良く見えます。しかし、私はまだ[Status2]
のための1つの列とマップされた値の別のルックアップテーブルを作成する方が良いと思う。次に、そのテーブルをクエリに結合します。テーブルを作成した後は、クエリで簡単に使用できます。Switch()
や入れ子になったIIf()
の式を使用するアプローチよりも理解しやすいと思います。新しい条件を追加する必要がある場合は、ルックアップテーブルの行として追加するだけで簡単に拡張できます。
これは機能していないとはどういう意味ですか? OR式を書くことができない、または式を書くことができますが、正しい結果が得られないということですか? –