• 締切済み

クエリの抽出条件で困っています

Access2007にて、クエリの抽出条件に下記を指定していますが、データが1件も抽出されません。 ※エラーは表示されません IIf([forms]![F_Home]![アンケート種別]="1級",1 Or Is Null,2 Or Is Null) この抽出条件をしているフォールドには"1"、"2"、nullのデータしか存在しません。 「アンケート種別」が"1級"の場合は、"1"とnullのデータをかえし、 それ以外の「アンケート種別」の場合は、"2"とnullのデータをかえしたいと思っています。 どのように条件を指定すれば、データを抽出できるようになるでしょうか。 宜しくお願い致します。

みんなの回答

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.4

アクセスのGUIを使いたくないなら、 SQLを直接いじるという手も有ります。 If [forms]![F_Home]![アンケート種別]="1級" then strSQL = "SELECT * FROM TABLENAME WHERE TABLENAME.FIELDNAME = 1 OR TABLENAME.FIELDNAME IS NULL" else strSQL = "SELECT * FROM TABLENAME WHERE TABLENAME.FIELDNAME = 2 OR TABLENAME.FIELDNAME IS NULL" end if CurrentDB.QueryDefs("QUERYNAME").SQL = strSQL DoCmd.OpenQuery "QUERYNAME" のように。 (フォームのコマンドボタンなどにて、実行させてください)

回答No.3

> 抽出条件行が足りないのです。 リボンの[デザイン]→[クエリ設定]→[行の挿入] で挿入してください。 演算フィールドに抽出条件を設定するのは、インデックスが無効になり、データが大量のときは重くなる可能性がありますので、できれば避けたいですね。

anuragi
質問者

補足

回答有難うございます。 [行の挿入]で条件が増やせたので、条件指定はできるようになったのですが、nullの時にデータを全く抽出できていません。 IIf([forms]![F_Home]![アンケート種別]="1級",1,2) →抽出可 IIf([forms]![F_Home]![アンケート種別] is Null,9,Null) →抽出不可 ※「アンケート種別」未選択時は1件も登録が無い"9"を設定 IIFでNullを指定する事はできないのでしょうか?

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

クエリの抽出条件は消して、新たなフィールドをクエリに追加 式1: IIf([対象フィールド名]=[forms]![F_Home]![アンケート種別] ,1,2) この式1の抽出条件に、1 対象フィールド名の抽出条件に1行ずらして、 Is Null としてみてください。かな?

anuragi
質問者

補足

回答有難うございます。 nicotinismさんのやり方も考えたのですが、フィールドに下記のように設定をしても結果が全てnullになってしまいます。 アンケート種別コード: IIf([forms]![F_Home]![アンケート種別]="1級",IIF([T_アンケート]![アンケート種別コード] Is Null,1,[T_アンケート]![アンケート種別コード]),IIF([T_アンケート]![アンケート種別コード] Is Null,2,[T_アンケート]![アンケート種別コード])) 何か根本的に考え方を間違えているのでしょうか。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

1 or is nullは論理式? 文字列? 一行目(抽出条件)にisnullを入れて、 二行目(または)にIIf([forms]![F_Home]![アンケート種別]="1級",”1 ”,”2”) を入れたらいいんじゃないかな。

anuragi
質問者

補足

回答有難うございます。 「1 Or Is Null」は論理式です。 ShowMeHowさんのやり方も考えたのですが、同じ抽出条件を3つのフィールドに指定しなければ ならないので、抽出条件2行*3フィールドになり、抽出条件行が足りないのです。 何か他に良いやり方はないでしょうか。

関連するQ&A

専門家に質問してみよう