- ベストアンサー
ACCESS2010 データ一致でテキストを返す
- ACCESS2010でクエリー内の計算式について質問です。クエリー内にフィールド1とフィールド2があり、この中のデータの組み合わせによって別のフィールドにテキストのコメントを返すための計算式を教えてほしいです。
- 例えば、フィールド1が'A'でフィールド2が'1'であった場合はフィールド3に'当たり'というテキストを返し、他の組み合わせではブランクもしくは異なるテキストを返したいです。
- IIf関数を使用して計算式を作成しましたが、うまく動作しません。一つのフィールドを対象にした場合は問題なく表示されますが、複数のフィールドを組み合わせた場合にエラーが発生します。どのような計算式を使用すれば良いか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
解決しましたか。方法はいろいろありますが、質問に合わせてIIf関数を 使うならば、IIfの入れ子を行ないます。以下のように。 判定1:IIf([フィールド1]="A"AND[フィールド2]="1","当たり",IIf([フィールド1]="B"AND[フィール2]="2","はずれ",IIf([フィールド1]="C"AND[フィールド2]="3","もう一回",""))) あるいは、ユーザー定義関数を作成して処理を行なう方法もあります。 たとえば、以下の二つの関数は同じ動作をします。 Function cmdJudge1(ByVal fld1 As String, ByVal fld2 As String) As String Select Case True Case fld1 = "A" And fld2 = "1" cmdJudge1 = "当たり" Case fld1 = "B" And fld2 = "2" cmdJudge1 = "はずれ" Case fld1 = "C" And fld2 = "3" cmdJudge1 = "もう一回" Case Else cmdJudge1 = "" End Select End Function Function cmdJudge2(ByVal fld1 As String, ByVal fld2 As String) As String If fld1 = "A" And fld2 = "1" Then cmdJudge2 = "当たり" ElseIf fld1 = "B" And fld2 = "2" Then cmdJudge2 = "はずれ" ElseIf fld1 = "C" And fld2 = "3" Then cmdJudge2 = "もう一回" Else cmdJudge2 = "" End If End Function これらの関数を使用する場合は、標準モジュールにそのまま貼り付け、保存し、 クエリの中から呼び出します。 IIf関数と二つの関数の挙動を確認するために以下のSQL文を新しい クエリのSQLビューに貼り付け確認してみてください。 SELECT テーブル2.フィールド1, テーブル2.フィールド2, IIf([フィールド1]="A" And [フィールド2]="1","当たり",IIf([フィールド1]="B" And [フィールド2]="2","はずれ",IIf([フィールド1]="C" And [フィールド2]="3","もう一回",""))) AS 判定1, cmdJudge1([フィールド1],[フィールド2]) AS 判定2, cmdJudge2([フィールド1],[フィールド2]) AS 判定3 FROM テーブル2; IIf関数を使った場合と、二つの関数のいづれかを使った結果は 多分、同じだと思いますが。
その他の回答 (1)
- piroin654
- ベストアンサー率75% (692/917)
No1です。回答の最後のあたりの以下のSQL文の中で、 SELECT テーブル2.フィールド1, テーブル2.フィールド2, IIf([フィールド1]="A" And [フィールド2]="1","当たり",IIf([フィールド1]="B" And [フィールド2]="2","はずれ",IIf([フィールド1]="C" And [フィールド2]="3","もう一回",""))) AS 判定1, cmdJudge1([フィールド1],[フィールド2]) AS 判定2, cmdJudge2([フィールド1],[フィールド2]) AS 判定3 FROM テーブル2; テーブル2がいくつかでてきますが、、これはこちらで作成 したテーブル名なので実際に合わせて変更してください。
お礼
IIf関数およびユーザー定義関数どちらでもできました。 非常に参考になりました。ありがとうございました。