クエリによるデータ集計とレポート作成の方法
- データ種類やランクごとに集計するクエリを作成していますが、よりスッキリとした方法を模索しています。
- andとiifを使用することで条件に応じた集計を行うアイディアを考えていますが、具体的な方法が浮かびません。
- もしもうまくいく方法があるのであれば、それについて教えていただきたいです。
- ベストアンサー
andとiifの使用。
ID | データ種類 | データの数 | ランク という集計クエリを作成しています。 ID、データ種類、ランクはグループ化してあり、 さらにデータ種類はフォームで選んだもので抽出するように抽出条件が設定してあります。 データの数は、「Iif([データ種類]="","",1)」という条件で計算してあり、 集計は「演算」になっています。 クエリの結果は ID |データ種類|データ数 |ランク 110 | お中元 | 4 | A 110 | お中元 | 3 | B 120 | お中元 | 8 | A 120 | お中元 | 6 | B というようなカンジになっています。 このクエリを元にレポートを作成したいのです。 レポートの状態としては ID | Aランク | Bランク | Cランク・・・ 110 | 4 | 3 | 8 120 | 8 | 6 | 1 130 | 10 | 11 | 7 というように表示したいのです。 以前はランクごとにクエリを作成して、レポートに組み込んでいたのですが、 もっとすっきりさせたいと思い、作成しなおしています。 andとiifを使って条件を指定してできるかな、と思ったりしたのですが、 いいアイディアが浮かばない状態です。 どのようにしたらうまくいくでしょうか? やはりランクごとにクエリを作成しないとダメでしょうか? わかりづらい文章ですけど、宜しくお願いします。
- KODAMAR
- お礼率66% (871/1309)
- オフィス系ソフト
- 回答数5
- ありがとう数6
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
再登場 ((@_@)本当だこちらでも再現した) >もし、さらによい案がありましたら、お知らせください。 代替案 データの種類選択TBLを作成し 年度別合計一覧フォームフォームでそのTBLにデータの種類をセットして テーブル結合で対象を選択し クロス集計 あまり参考にならなくてすみませんでした。 m(__)m
その他の回答 (4)
- k_eba
- ベストアンサー率39% (813/2055)
再登場(チャットみたいです(笑)) 先に誤っておきます。ゴメンナサイ。私の書き方が悪かったようです。 書きなおします。 1.フォームの入力 2.通常の選択クエリ ・クエリーの抽出条件に[Form]・・・を書く 3.クロス集計クエリ ・インは通常の選択クエリ(2.を指定) とすればファイルに書かなくてもOKです 2でいきなりクロス集計はきついと思います。 参考になれば幸いです
お礼
すばやい登場ありがとうございます。 上記のことをやると、2から3にかけてのクロス集計クエリ作成のところで 以前に書いたエラーが出てしまうんです。
- k_eba
- ベストアンサー率39% (813/2055)
再登場(はやいっすね!そんだけあせっている?) どこでエラーになっているか切り分けましょう。 1.年度別合計一覧フォームフォームを開いてデータ種類を選択します 2.クエリーをデータベースから開きます 3.開けたら次、次のクエリーを開きます 気になった所 >'[Form]![年度別合計一覧フォーム]![データ種類]' 『’』て入っているの? >データの種類を選択したあと・・・ コンボボックスか何か EX 1.フォームのレコードソースは無いのですね 2.クエリーの抽出条件に[Form]・・・を書いているのですね 頑張って下さい。 また私がNo.1で回答した内容を止めるとどうなるかも合わせて 補足して下さい
お礼
再再登場ありがとうございます。 >2.クエリーをデータベースから開きます というのはコマンドボタンなどからではなく、ダブルクリックでクエリを開くということですよね? これをやると#2でかいたエラーが出てしまうのです。 >気になった所 >>'[Form]![年度別合計一覧フォーム]![データ種類]' > 『’』て入っているの? 実際の抽出条件の中には入っていませんが、エラーメッセージには入っています。 >データの種類を選択したあと・・・ コンボボックスか何か はい、コンボボックスです。 > 1.フォームのレコードソースは無いのですね はい、ありません。 デザインビューで作成してあります。 > 2.クエリーの抽出条件に[Form]・・・を書いているのですね そうです。これで抽出するようにして有ります。 >また私がNo.1で回答した内容を止めるとどうなるかも合わせて というと、クロス集計クエリをやめて、通常の選択クエリで、ということでしょうか? これですと、ただ単に全件というか、グループになった状態で、出てきます。 (質問のときに書いたようなカンジです。) #2のお礼のところに新たな考えをかいてみたのですが、どう思われますか? 結構面倒なことやってるんですけどね。。。
- k_eba
- ベストアンサー率39% (813/2055)
再登場 >データの種類を選んでいるので、エラーが出てしまうんです。 ????? 質問 どんなエラーですか どんな順番ですか (~フォームで入力、~クエリー、・・・・・) どこでエラーになっていますか? とりあえずここまで補足して下さい 頑張って下さい
お礼
一旦、フォームで選んだもので選択クエリを作成し、それでテーブルを作成して、そこからクロス集計クエリを作って。。。というようにやることにしました。 なんかイマイチすっきりしないけど。。。 もし、さらによい案がありましたら、お知らせください。 ご協力ありがとうございました。
補足
再登場ありがとうございます。 > どんなエラーですか -------------------- '[Form]![年度別合計一覧フォーム]![データ種類]'を有効なフィールド名、または式として認識できません。 -------------------- と出ます。 >どんな順番ですか >どこでエラーになっていますか? 年度別合計一覧フォームで、データの種類を選択したあと、クエリを実行しようとしていますが、このクエリを開こうとした時に上にかいたエラーが出てしまいます。 宜しくおねがいします。
- k_eba
- ベストアンサー率39% (813/2055)
出来たっと!遅くなりました。 1.クエリーで新規作成 2.クロス集計クエリーウィザード 3.集計クエリーを選択→次へ 4.IDを選択→次へ 5.ランクを選択→次へ 6.データ数→合計→次へ 7.集計値を削除 ほら出来た。パチパチパチ 参考になれば幸いです
お礼
回答ありがとうございます。 これである程度まで完成に近づいたのですが、 フォームで入力したものからデータの種類を選んでいるので、エラーが出てしまうんです。 これを回避する方法なんていうのはないのでしょうか? 宜しくお願いします。
関連するQ&A
- Accessの抽出
今、何処へいくつ荷物を送るかのリストを 作成しています まず、テーブルAにデータが入っています クエリーBで日付にてデータ抽出させています クエリーCでクエリーBで抽出したデータの クロス集計をしています。 そして、その結果をレポートで印刷します。 ここまではいいんですが、 レポートで出したデータの中に レポートに出さなくてもよい荷物が数個あるんです その荷物がレポートに出ないようにする為には どうしたらいいのかわかりません。 ちなみにテーブルAは基本データなので いじりたくはありません。 このような条件で数個の印字しなくてよいデータを 出さずにどこへ荷物がいくついくのかがわかる リストを作成するにはどうしたらよいでしょうか? 説明がわかりずらいとは思いますが 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- AccessのIIFの引数の条件について教えてください。
こんにちは。 初心者すぎて申し訳ございませんが、ご教授お願いいたします。 クエリを作成し、そこにiifで条件を入れたいと思います。 そのフィールドには、”承認済”・”未承認”・”申請前”と、3種類があります。 また、フォームのオプションボタンは”1”・”2”があります。 (1)オプションボタンが”1”ならば”承認済” (2)でなければ、”未承認”と”申請前”となっている結果を表示させたく思います。 クエリの抽出条件に以下の条件を書いてみたところ、 「式が正しく入力されていないか、複雑すぎるために評価できませんでした。~」 となってしまいます。 IIf([Forms]![フォーム1]![フレーム8]=1,"承認済","未承認" Or "申請前") 条件を1つ削り以下の式は、正しく表示されるのですが・・・。 IIf([Forms]![フォーム1]![フレーム8]=1,"承認済","未承認") いろいろやってみたのですがわかりませんでした。 お手数ですが、以上よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- Accessでのiif関数について
はじめまして。 Microsoft Accessの関数についての質問です。 例えばクエリの「商品名」の値AをBに置き換えたい場合、 =iif([商品名]=A,B)とします。 また、商品番号1000~9999まであるとして、1000~1999を抽出したい場合は、Like "1*" もしくは、Between 1000 And 1999 とします。 この時に 商品番号1000~1999を一律1000と置き換えたい場合、クエリでやるとしたらどのようにすれば良いのでしょうか。 イメージ的には =iif([商品番号]="1*",1000)なのですが、「"1*"」の部分をどうやってもうまくいきません。 どなたか詳しい方いらっしゃいましたらお教え頂けないでしょうか。 お忙しいところ申し訳ございませんが、宜しくお願い致します。
- ベストアンサー
- その他(業務ソフトウェア)
- access クエリでIIF文で抽出条件なし
フォームにコンボボックスを用意し、(コンボボックスは、「両方」、「条件A」、「条件B」の3項目です) クエリで抽出条件にIIF文を使い、 IIf([Forms]![フォーム]![コンボボックス]="両方",'',[Forms]![フォーム]![コンボボックス]) ”両方”を選択した場合は、「抽出条件なし」としたいのですが、できませんでした。 別案として、 IIf([Forms]![フォーム]![コンボボックス]="両方","条件A" or "条件B",[Forms]![フォーム]![コンボボックス]) なども試しましたができませんでした。 どうか解決方法をご教授願います。
- ベストアンサー
- オフィス系ソフト
- Accessクエリ IIFについて
お世話になります。 2つのテーブルをIDで紐付けて、それぞれの項目を比較し、○×を付けたいと思います。 【テーブルA】 ID メーカー 型番 品名 【テーブルB】 ID メーカー 型番 品名 【クエリC】 テーブルAとテーブルBをIDで紐付けて、各フィールド名を テーブルAの方は前回_メーカー、前回_型番、前回_品名 とし、 テーブルBの方は今回_メーカー、今回_型番、今回_品名 とする。 【クエリD】 クエリCを元に、 前回_メーカー、前回_型番、前回_品名、今回_メーカー、今回_型番、今回_品名 を並べて表示し、それぞれを以下のように評価する。 メーカー評価:IIf([前回_メーカー]=[今回_メーカー],"○","×") 型番評価:IIf([前回_型番]=[今回_型番],"○","×") 品名評価:IIf([前回_品名]=[今回_品名],"○","×") 上記3つの評価でいずれかが×となっているレコードを抽出。 しかし、前回と今回でいずれも型番が空白(Null)だった場合、上記評価を すると"×"となってしまいました。 そこで質問ですが、 ・そもそもNull同士の評価は"×"になってしまうのでしょうか?(比較できない?) ・テーブルAはSQL Server上にあり、テーブルBはExcelをインポートしたもの (Accessのローカルテーブル)です。この違いによるものでしょうか。 ご教授の程、宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- ACCESSのクエリー抽出条件にIIFを使用して
コンボボックスの値を抽出条件にしたクエリーを作成しています。 コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、 以下の式を入れたのですが全表示がされません。 IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値]) Like "*" の部分がいけないのでしょうか? (偽の場合は選択した値のレコードが抽出されます) どなたか教えてください、よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- クエリの抽出条件でiif関数
こんにちわ。 いまaccess2000でクエリを作成し, その抽出条件において,iif関数を使って, フォームのあるフィールドに値があるときはその値, ないときはワイルドカードで検索しようと思い, 下記のコーディングを入れました。 iif([Forms]![F_フォーム1].[テキスト1] Is Null, "*", [Forms]![F_フォーム1].[テキスト1]) ところがワイルドカードの"*"がうまく効いてくれないようで 正しく検索されません。 どうすれば正しく検索できるでしょうか? 教えてください。お願いします。
- ベストアンサー
- その他(プログラミング・開発)
- access2000でのiifを使う条件で
削除クエリを実施する際にフォームでテキスト16からテキスト18って感じで日付を入力して削除しています。テキスト16に何も入力しない時は2000/01/01からテキスト18までとなるようにしたくてクエリの抽出条件に IIf([Forms]![F_A]![テキスト16]="", Between #2000/01/01# And [Forms]![F_A]![テキスト18],Between [Forms]![F_A]![テキスト16] And [Forms]![F_A]![テキスト18]) って入れたのですが上手く動きません。 何か根本的に間違ってたりした。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESS初心者です。クエリの抽出条件の記述でお尋ねします。
ACCESS初心者です。クエリの抽出条件の記述でお尋ねします。 更新クエリの定義で悩んでいます。どうしたら思い通りになるかご指導願います。 ★aaaフォーム a1 txt ★bbbテーブル b1 txt key b2 txt b3 txt ★ccc更新クエリ(bbbテーブル) b1 b2 b3 ★CCCクエリで抽出条件を色々試しますが結果は以下の○×の通りです。 遣りたい事は、aaaフォーム="1"でクエリ[ccc][b2]が"10"以上の場合に、[ccc][b3]を定数で更新させたいのですが、勉強不足で記述がどうしても分かりません。下記のiifはクエリ画面の[ccc][b2]列の抽出条件の記述です。 ○ iif([aaa][a1]="1","10") × iif([aaa][a1]="1",>="10") × iif([aaa][a1]="1",">=10") × iif([aaa][a1]="1","10"or"11"or"12"or"13") win xp pro ACCESS2003 です。 以上
- 締切済み
- その他MS Office製品
- 抽出条件に応じてテーブルを作り分ける方法
抽出条件テーブル(a)があり、抽出条件が参照するテーブル(b)がある。(a)には複数の抽出条件が登録され、(a)を参照しつつ、(b)から抽出されるテーブル(c)を抽出条件に応じて複数作成したい。つまり、(a)に登録された抽出条件の数だけテーブル(c)が作成される。 これをクエリで実行できる方法をご教示願いたい。 なお、(b)からデータを抽出する場合、上記の抽出条件テーブル(a)に代えて、クエリ内に抽出条件を20~30個記述する方法でも可。 Access2010を使用しています。VBAは使用しません。
- 締切済み
- オフィス系ソフト
お礼
やはりこのやり方しかないようですね。。。 >あまり参考にならなくてすみませんでした。 m(__)m いえいえ、クロス集計を教えていただいて、かつ長い間おつきあいいただきましてありがとうございました!!