- ベストアンサー
Accessで、一項目の値ごとにカウントしたい
Accessのテーブルの項目に、AとBとCという項目が設定されています。 Aが何件、Bが何件、Cが何件 というレポートを作りたいのですが、クエリでやってみると、 同一項目を3つにそれぞれの条件でカウントしようと記述しても、 AND条件になって、できませんでした。 条件式を考えれば当たり前なのですが・・・。 これをシンプルな方法で実現するにはどうすればよいでしょうか? アドバイスお願いします。
- groovyreality
- お礼率84% (346/409)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<tab1> ID___fld_1 01__A 02__A 03__B 04__B 05__C <クエリ1> Count_A__Count_B__Count_C _________2___________2___________1 SELECT DBCount("*","tab1","fld_1='A'") AS Count_A, DBCount("*","tab1","fld_1='B'") AS Count_B, DBCount("*","tab1","fld_1='C'") AS Count_C; まあ、シンプルと言えばシンプルです。 留意事項は、戻り値がVariantだということです。 Public Function DBCount(ByVal strField As String, _ ByVal strTable As String, _ Optional ByVal strWhere As String = "", _ Optional ByVal ReturnValue = 0) As Variant On Error GoTo Err_DBCount Dim N Dim strQuerySQL As String Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset strQuerySQL = "SELECT COUNT(" & strField & ") FROM " & strTable If Len(strWhere) > 0 Then strQuerySQL = strQuerySQL & " WHERE " & strWhere End If With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst N = .Fields(0) End If End With Exit_DBCount: On Error Resume Next rst.Close Set rst = Nothing DBCount = IIf(N <> 0, N, ReturnValue) Exit Function Err_DBCount: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBCount End Function
その他の回答 (1)
- fumufumu_2006
- ベストアンサー率66% (163/245)
サブクエリでできるはずです。 これが正しいやり方かどうかはわからないのですが・・・ nullじゃない件数を出す場合 SELECT Count([A]) AS Aの件数,(SELECT Count([B]) FROM テーブル1) as Bの件数 ,(SELECT Count([C]) FROM テーブル1) as Cの件数 FROM テーブル1; 数値で0じゃない件数を出す場合 SELECT Count([A]) AS Aの件数,(SELECT count([B]) FROM テーブル1 where [B]>0) AS Bの件数,(SELECT count([C]) FROM テーブル1 where [C]>0) AS Cの件数 FROM テーブル1 WHERE A>0 これは、Aの件数を表示する SELECT Count([A]) AS Aの件数 FROM テーブル1 に、 SELECT count([B]) FROM テーブル1 SELECT count([C]) FROM テーブル1 も一緒に表示させたみたいなのです。 必要に応じてwhere条件を変えてください。
お礼
ありがとうございます。 いろいろ試してみます。
関連するQ&A
- ACCESS2003単純計算方法
ACCESSの質問お願いいたします。 ACCESS初心者です。 テーブルにA、B、C、Dの項目を作成し テーブルDにA-BやB-Cなどの計算を実行して Dのテーブルに代入する方法を教えてください。 クエリを使う課と思いますが、記述式は テーブル名でしょうか? よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Access2000 の更新クエリでカウントアップ
初歩的なことだと思うのですが、 Access2000を利用し、 あるテーブルのAというキーのレコードの数値項目2つを、 更新クエリを動作させるたびに、1づつカウントアップさせたいのですが、 どのように記述するのでしょうか? キー項目 項目1 項目2 タイムスタンプ A 0 1 2007・・。 ここで、更新クエリを起動して、 A 1 2 2007・・・ ここで更新クエリを起動して A 2 3 2007・・・ 更新クエリのレコードの更新欄にはどのように記述すれば、正しく動作するかお教えください。 (タイムスタンプは、Now()を設定しています) 宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- accessでチェックされたもをカウントしたいんですが
Access2000にて次のようなデータベースを作成しています。 おそらく非常に初歩的な質問だと思うのですが、全くの素人のため困っています。 バカバカしいなどと言わずにどうかご教授願います。。。 ----------------------- No グループ名 分類1 分類2 分類3 1 グループA レ レ レ 2 グループB レ 3 グループB レ レ 4 グループB レ レ 5 グループC レ 6 グループC レ レ ----------------------- 分類1~3はチェックボックスで入力されています。 このデータを元に、それぞれ分類1~3に属するデータの数をカウントしたいのです。 レポートの記述でどのようにすればチェックの入ったものだけをカウントできる のでしょうか。 目的は上のテーブルを次のような表にすることです。 -------------------- グループ名 分類1 分類2 分類3 グループA 1 1 1 グループB 1 1 3 グループC 2 0 1 ──────────────────── グループ計 4 2 5 -------------------- どうかよろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- Access97でデータのカウント
Access97のお話です。 アルファベット26文字がランダムに並んでいるテーブルがあるとします。 ここで「A」は上から数えて何番目にあるか?、 というクエリーを作成したいのですが・・・ テーブル C B D A クエリー 「A」は「4」番目
- 締切済み
- オフィス系ソフト
- Accessのレポート上での計算
現在4つのフィールドで=DCountを使ってリストの個数を返すクエリを組みました。 それをレポートで表示したのですが、この各フィールドの個数を合計したいんです。 テーブルB | A | B | C | D | ←このA~Dにはコンボボックスでタイプが入っています。 これから クエリ 式1:=DCount("*","テーブルB","[A]='タイプ1'") クエリを実行すると 1 式2:=DCount("*","テーブルB","[A]='タイプ2'") クエリを実行すると 0 式3:=DCount("*","テーブルB","[A]='タイプ3'") クエリを実行すると 1 が表示 といったようにクエリで選ばれている個数を算出しています。 このクエリを使ってレポートを作ったのですが、 レポートフッターに =Sum([式1]+[式2]+[式3]) という式を入れてレポートを表示すると 「101」と返ってきてしまいます(表示されている数字が順番にならんでる)。 目的としては「2」にしたいのですが、式が違うのでしょうか? 初心者バリバリの質問で申しわけありませんが、ご教授いただけますようお願いいたします。
- ベストアンサー
- その他MS Office製品
- 【Access2007】クエリを教えてください
Access2007を使用しています。 以下のような3つのテーブルがあります。 テーブルA No 項目a 1 ○ 2 ○ 3 ○ 5 ○ テーブルB No 項目b 1 ○ 4 ○ 5 ○ テーブルC No 項目c 1 ○ 2 ○ 4 ○ 6 ○ これらの3つのテーブルから以下の結果を返すクエリはどうすればいいのでしょうか? No 項目A 項目B 項目C 1 ○ ○ ○ 2 ○ ○ 3 ○ 4 ○ ○ 5 ○ ○ 6 ○
- ベストアンサー
- その他MS Office製品
- ACCESS2000でDCount関数の使い方
ACCESS2000で更新クエリの質問です。 先日同様の質問をさせていただきましたが、その後うまくできないところがあったので再度質問させていただきました。 内容は、フィールドの値のカウントを集計し、更新クエリを使用してデータを更新するという内容です。 前回の質問でDCount関数を用いて下記のとおり実行するとできるとのことでしたが、条件が複数ある場合どのように記述すれば いいのかを教えて下さい。 条件は、 (1)年月 =Aテーブル.年月 (2)コード=Aテーブル.コード (3)区分 =Aテーブル.区分 <こんな感じで実行しようとしたのですがうまく動きません> UPDATE Bテーブル SET" カウント数1 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='001'') カウント数2 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='002'') やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> A年月 Aコード A区分 200807 9991 001 200807 9991 001 200807 9991 001 200807 9991 002 200807 9991 002 <Bテーブル> B年月 Bコード Bカウント数1 Bカウント数2 200807 9991 0 0 ↓↓↓更新後 <結果:Bテーブル> B年月 Bコード Bカウント数1 Bカウント数2 200807 9991 3 2 ↑ ↑ (Aテーブルの区分='001' (Aテーブルの区分='002' を集計した結果) を集計した結果)
- ベストアンサー
- その他(データベース)
- ACCESSについて
Accessで以下のように処理したいのですが、方法を教えてください。 下記のように2つのテーブル1、2があり、それぞれ一つずつの項目(A、B)があります。 テーブル1 テーブル2 項目A 項目B 001 002 002 004 005 006 006 007 008 008 これをクエリーを使って、 クエリー0 テーブル1.項目A テーブル2.項目B 001 002 002 004 005 006 006 007 008 008 と表示させたいのですが、どうしたらいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- Accessで計算値を項目へセットする方法。
こんにちは。 非常に初歩的な質問で申し訳け御座いません。 Accessで計算値を項目へセットする方法についてお伺い致します。 A,B,Cのテーブル項目があったとして、フォームからA,Bへ入力した値をA*Bを計算してCへセットする場合に、これを実現できる方法(手段)を知りたいと思います。 マクロとVBAでは可能と思いますが、こちらの方法は除外しまして式ビルダを使って可能なのでしょうか。 (実は前から漠然と出来ると思っていたのですが、出来ないような気がしてきました。私の勘違いのではと思っています。) Accessのご経験豊富な方のご意見を宜しくお願い致します。
- 締切済み
- オフィス系ソフト
- アクセス2007の単票レポートの各項目の配置変え
Windows7をベースにアクセス2007を使っています。ごく最近まで、旧バージョンを使っていた際には、クエリーで得た検索結果をベースに、レポート(単票)にまとめる際、各項目ごとに配置や表示されるマスの大きさを変更できていたのが、選択したクエリーをベースに「レポートウィザード」で作ると、全ての項目が一斉に位置変更してしまい、個別に配置位置変更できなくなりました。 どうしたら個別に配置位置変更できるのかお教えください。 詳細説明: 「A項目 ↓」 「B項目 ↓」 「C項目 ↓」 の状態から 「A項目↓」 「B項目 ↓」 「C項目 ↓」 ※↓はマスの最後 としたいが、マウスでドラック&ドローすると 「A項目 ↓」 「B項目 ↓」 「C項目 ↓」 や 「A項目↓」 「B項目↓」 「C項目↓」 と一斉に↓の配置が動いてしまう。
- ベストアンサー
- オフィス系ソフト
お礼
細かいコードまでアドバイスいただき ありがとうございました。