チェックボックスにチェックのあるものの個数を数えたいのですが、クエリの集計でカウントを選び抽出条件にYesを入れても結果がレコード数の数でしか出てきません。集計条件を合計にするとチェックのあるものは-1なのでマイナスの数字が出てきます。どうしたらよいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (5件)

以下のようにすれば


SELECT Sum(IIf(TEST.Flgb=True,1,0)) AS 件数
FROM テストテーブル;
    • good
    • 0

>クエリの集計でカウントを選び抽出条件にYesを入れても結果がレコード数の数でしか出てきません


カウントを選んだフィールドの抽出条件にYesを入れても抽出できません。
もう一つ同じフィールドをクエリ内に作り集計の蘭をWhere条件にして抽出条件にYesを入れ表示のチェックを外し非表示にしてみてください。
カウントするフィールドと抽出するフィールドの二つを作らないとダメです。
    • good
    • 0

例えば、「名簿」テーブルに、[参加]という Yes/No型のフィードだとすると、



クエリーの「フィールド」に 参加者数:参加 と入力します。
集計欄に「カウント」を指定します。
「表示」欄にチェックを入れます。
「抽出条件」には、何も入力しません。

その右側のフィールドに 参加 と入れ、集計欄に「グループ化」を指定します。
「抽出条件」に Yes または、True と入力します。
「表示」欄には、チェックを入れません。

当然ですが、「テーブル名」欄は、双方とも「名簿」です。

これで如何でしょうか。
    • good
    • 0

SQLビューに切り替えて以下を編集


TEST→テーブル名
Flg→チェックボックスの列名


SELECT Count(*)
FROM TEST
WHERE (((TEST.Flg)=Yes));
    • good
    • 0

条件を「Yes」では無く「True」に変更してみて下さい。

この回答への補足

Trueにしても結果が変わりません。レコード数しか出てきません。

補足日時:2005/04/12 13:00
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessクエリーでチェックボックスOnのものだけカウントしたい

こんにちわ。
超初心者です。

チェックボックスがOnになっているものだけカウントしたいんですが、どこ
をどうしたら良いのか分かりません。

クエリーの集計を「カウント」にしてみたのですが、Offもカウントされて
しまいます。

どうしたらよいのでしょうか?

Aベストアンサー

例えば「名前」と「チェックボックス」というフィールドが合ったとします。
選択クエリで集計欄に
名前は「カウント」、チェックボックスは「グループ化」をし、
チェックボックスの抽出条件のところに、-1と入れれば、
数は数えられますが。。。
こんなので参考になりますか?

QACCESS Yes/No型の集計

ACCESSでチェックボックスが複数あるテーブルがあります。これら各々の個数を表示させたいと奮闘しております。複数のフィールドがあるので、やり方をご教授いただけますようお願いいたします。構造とやりたいことは下記に記します

Yesはチェックボックスにチェックが入っている状態です

テーブル
----------------------------------------------
グループ   分類1   分類2   分類3
----------------------------------------------
  A   |  Yes  |  No  |  Yes
  A   |  No   |  No   |  Yes
  A   |  Yes  |  Yes  |  No
  B   |  Yes  |  No  |  Yes
  B   |  No   |  No  |  Yes
  B   |  Yes  |  No  |  Yes
  ・
  ・
  ・
  ZZ

上記のようなテーブルがあります。これを
-----------------------------------------------------
グループ   グループ総数   分類1   分類2   分類3
-----------------------------------------------------
  A    |   3     |   2   |  1   |  2
  B    |   3     |   2   |  0   |  3
  ・
  ・
  ・
  ZZ

とういうようにグループの総数とチェックボックスにチェックが入った数を算出させたいんです

どうかご教授願います

ACCESSでチェックボックスが複数あるテーブルがあります。これら各々の個数を表示させたいと奮闘しております。複数のフィールドがあるので、やり方をご教授いただけますようお願いいたします。構造とやりたいことは下記に記します

Yesはチェックボックスにチェックが入っている状態です

テーブル
----------------------------------------------
グループ   分類1   分類2   分類3
----------------------------------------------
  A   |  Yes  |  No  |  Yes
  A   |...続きを読む

Aベストアンサー

以下でどうですか。テーブル名は実際に合わせて変更してください。


SELECT テーブル1.グループ, Count(テーブル1.グループ) AS グループの総数, Abs(Sum([分類1])) AS 分類1のYes数, Abs(Sum([分類2])) AS 分類2のYes数, Abs(Sum([分類3])) AS 分類3のYes数
FROM テーブル1
GROUP BY テーブル1.グループ;


上記では、Sum([分類1])とするとマイナスのカウントに
なるので、Abs関数で絶対値を求める方法でプラスに
変換しています。

Qクエリーの抽出条件の入力の仕方を教えて下さい

アクセスでクエリーを作成する時、チェックボックスにレが付いてるデータだけを抽出して作成したいのですが、
抽出条件の所に何と入力すればよいでしょうか。よろしくお願いします<m(__)m>

Aベストアンサー

文章から察するにフォーム上のチェックマークの付いたレコードがあって、それらのレコードをクエリで抽出するってことですよね?
ならば、クエリのデザイン画面で抽出欄に「-1」を指定することで抽出できます。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QACCESSで条件によってフォーム上のフィールドの色を変更

一覧形式のフォームがあり、条件によって色を変更したいのですが、その条件というのが下記のような感じです。

フィールドA | フィールドB | フィールドC | チェックボックス
チェックボックスのチェックがあったら、フィールドA・B・Cの色をグレーにする。
チェックがなかったら白いまま。

というものです。
条件付書式だと、色を変更するフィールドそのもののデータを参照にしないといけないんですよね?
フォームオープンのところにVBAをかいてみたんですが、ひとつひとつは認識してないみたいで…。
どのようにすればいいのでしょうか?

よろしくお願いします。

Aベストアンサー

フォームのデザイン画面で3つのフィールドすべて選択し条件付書式画面を表示させる。
条件1のコンボで”式”を選択。
右側の欄に[チェックボックスのコントロール名]=True
と入力し、バケツアイコンでグレーを選択。
(もちろん1フィールドづつ設定してもOK)

QAccessで、テーブルに入力した値をクエリでマイナス表示にする

いつもお世話になっております。m(_ _)m

至急教えてください。
テーブルのフィールドに入力した数字を複数のクエリで参照します。
1つのクエリでは、テーブルに入力した値、そのままを表示するので問題ないのですが、別のクエリでは、そのテーブルの値を参照する時、「マイナス」をつけることできますか?

テーブルの値自体を「マイナス」にしてしまうと、他のクエリで参照した時に問題になるので、できたら、そのクエリのみでマイナスで参照できるとありがたいのですが・・・

できるようでしたら、方法を大至急教えてください。
よろしくお願いします。

Aベストアンサー

クエリの設定時にフィールドを指定するのではなく、式で指定してあげてはどうでしょうか? クエリのデザイン時にフィールドの部分で右クリックすると「式ビルダ」があります。それを選んで 式を =[テーブル]![フィールド]*-1としてあげれば値をマイナスにして評価できます。

QACCESS DCOUNTの抽出条件について

式1: DCount("コード","テーブル","コード=" & [テーブル]![コード])

結果の2以上のものを抽出したいのですが、どのように記述するのでしょうか?

>1または>=2またはnot 1でもいいですが・・・
記述方法が良く分かりません。

Aベストアンサー

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも上記エラーが出ているようでしたら、
 元となるテーブルとクエリの情報(フィールド名とデータ型)をお知らせ下さい)
※なお、コードは数値型と想定しています。もしも文字列方の場合は、併せて
 式を「"コード='" & [テーブル]![コード] & "'"」と変更する必要があります。

上記のエラーを回避するには、DCountの第1引数を「*」にします。
また、コードがNullのレコードで、クエリの表示結果が「#エラー」となるのを
回避するためには、第3引数にNz関数を使用します。
(コードの最小値は0か1でしょうから、「最小値-1」(=-1か0)にするのがよいかと
 思います)

【Nullは重複数に含めない場合】
DCount("*","テーブル","コード=" & Nz([テーブル]![コード],-1))
※コードがNullの場合は、第3引数の結果がTrueにならない(Null=-1)ので
 0件扱いとなるため、抽出条件の「>1」で弾かれます。
 また、第3引数にNz関数を使用する代わりに、クエリの『コード』の抽出条件に
 「Is Not Null」を指定する(→最初から集計の対象外にする)方法もあります。

【Nullも1つのコードとして重複扱いする場合】
DCount("*","テーブル","Nz(コード,-1)=" & Nz([テーブル]![コード],-1))

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qアクセス2000 チェックボックスのカウント法

フォーム上にチェックボックス(YES/NO型)を作り、
どの項目が完了したかが分かるような表を作成しました。
チェックボックスは全部で70個ほどあるのですが、YESまたはNOの個数をカウントするにはどのようにすればいいのでしょうか?
マクロを使用せずにできるでしょうか?

Aベストアンサー

IFではなくIIFです。
ちょっと意味を取り違えてましたね、失礼致しました。
70個のフィールドがあるのですね、では、それぞれをIIF関数で判定させて集計するか、ソーステーブルを基にしたクエリーを作成し、そこで集計させた方が良いかも知れませんね

それと、ごめんなさい、ちょっと識別子が余計でしたので、訂正しますね
=SUM(IIF([チェックボックス]=yes,1,0))
多数あるのであれば、こんな風になりますね
=SUM(IIF([チェックボックス1]=yes,1,0)IIF([チェックボックス2]=yes,1,0)+IIF([チェックボックス3]=yes,1,0)+・・・・・)

ヘッダーかフッター以外でも集計可能かもしれませんが、Accessもバージョンによって、その辺が異なりますので、無難な所では、グループヘッダーかフッターなんです。
フォーム上での集計で、そのページだけなら問題は無いと思いますが、全体の集計となると、グループヘッダーかフッターになりますね

Qaccess フォームを開くと「パラメーターの入力」ウィンドウが開いてしまう

access2007
OS:winXP
 access初心者です。
 テーブルにて主キーの変更を行なったらその後フォームを開くたびに「パラメーターの入力」ウィンドウが勝手に出てくるようになってしまいました。
 何も入力せずにOKを押せばそのままフォームは開くのですが煩わしいので非表示にしたいです。
 変更するにはどのようにしたら良いのでしょうか?また、再発防止のためになんでこのような設定になってしまったのかも教えていただけるとありがたいです。

Aベストアンサー

横レス失礼致します。

> 「パラメーターの入力」ウィンドウに出てくる項目はテーブルからは消去したのですが、
> フォームのデザインビューで表示されるフィールドリストの中には残っていました

フィールドリストに残っているということは、そのフォームのレコードソースに指定している
テーブル/クエリに、その名前のフィールドがある、ということを意味しています。
テーブルからは削除済みとのことですので、恐らくそのフォームはレコードソースに
クエリ(又はSQL文)を使用しているものと推測します。

テーブルから削除されたフィールドがクエリ内に残っていると、そのクエリを実行したとき
(→そのクエリをレコードソースとするフォームを開いた場合を含む:コントロールでの
使用有無は問いません)に、「パラメータの入力」ダイアログが表示されます。
ですので、まずはレコードソースに指定しているクエリまたはSQL文の中に、テーブルから
削除したフィールドが残っていると思いますので、探してみてください。
(フィールドリストに、そのフィールドの名前が出ている(=「式1」などになっていない)という
 ことは、クエリのデザインビュー上で「フィールド名: ~」とするか、SQL文上で「As」を
 使用して、別名をつけているものと思います)

横レス失礼致します。

> 「パラメーターの入力」ウィンドウに出てくる項目はテーブルからは消去したのですが、
> フォームのデザインビューで表示されるフィールドリストの中には残っていました

フィールドリストに残っているということは、そのフォームのレコードソースに指定している
テーブル/クエリに、その名前のフィールドがある、ということを意味しています。
テーブルからは削除済みとのことですので、恐らくそのフォームはレコードソースに
クエリ(又はSQL文)を使用しているものと推測します...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報