- 締切済み
クエリの抽出条件で困っています
Access2007にて、クエリの抽出条件に下記を指定していますが、データが1件も抽出されません。 ※エラーは表示されません IIf([forms]![F_Home]![アンケート種別]="1級",1 Or Is Null,2 Or Is Null) この抽出条件をしているフォールドには"1"、"2"、nullのデータしか存在しません。 「アンケート種別」が"1級"の場合は、"1"とnullのデータをかえし、 それ以外の「アンケート種別」の場合は、"2"とnullのデータをかえしたいと思っています。 どのように条件を指定すれば、データを抽出できるようになるでしょうか。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ShowMeHow
- ベストアンサー率28% (1424/5027)
アクセスの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" のように。 (フォームのコマンドボタンなどにて、実行させてください)
- hatena1989
- ベストアンサー率87% (378/433)
> 抽出条件行が足りないのです。 リボンの[デザイン]→[クエリ設定]→[行の挿入] で挿入してください。 演算フィールドに抽出条件を設定するのは、インデックスが無効になり、データが大量のときは重くなる可能性がありますので、できれば避けたいですね。
- nicotinism
- ベストアンサー率70% (1019/1452)
クエリの抽出条件は消して、新たなフィールドをクエリに追加 式1: IIf([対象フィールド名]=[forms]![F_Home]![アンケート種別] ,1,2) この式1の抽出条件に、1 対象フィールド名の抽出条件に1行ずらして、 Is Null としてみてください。かな?
補足
回答有難うございます。 nicotinismさんのやり方も考えたのですが、フィールドに下記のように設定をしても結果が全てnullになってしまいます。 アンケート種別コード: IIf([forms]![F_Home]![アンケート種別]="1級",IIF([T_アンケート]![アンケート種別コード] Is Null,1,[T_アンケート]![アンケート種別コード]),IIF([T_アンケート]![アンケート種別コード] Is Null,2,[T_アンケート]![アンケート種別コード])) 何か根本的に考え方を間違えているのでしょうか。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
1 or is nullは論理式? 文字列? 一行目(抽出条件)にisnullを入れて、 二行目(または)にIIf([forms]![F_Home]![アンケート種別]="1級",”1 ”,”2”) を入れたらいいんじゃないかな。
補足
回答有難うございます。 「1 Or Is Null」は論理式です。 ShowMeHowさんのやり方も考えたのですが、同じ抽出条件を3つのフィールドに指定しなければ ならないので、抽出条件2行*3フィールドになり、抽出条件行が足りないのです。 何か他に良いやり方はないでしょうか。
補足
回答有難うございます。 [行の挿入]で条件が増やせたので、条件指定はできるようになったのですが、nullの時にデータを全く抽出できていません。 IIf([forms]![F_Home]![アンケート種別]="1級",1,2) →抽出可 IIf([forms]![F_Home]![アンケート種別] is Null,9,Null) →抽出不可 ※「アンケート種別」未選択時は1件も登録が無い"9"を設定 IIFでNullを指定する事はできないのでしょうか?