ここから本文です

アクセス クエリ 商品名が同じで管理番号が連番の時見やすく表示させたい。

aok********さん

2012/5/1911:04:34

アクセス クエリ 商品名が同じで管理番号が連番の時見やすく表示させたい。

アクセス2000を使用しています。

各担当者が持ち出した商品の在庫チェックをする時に、同じ商品名で管理番号が連番の時、先頭番号と終了番号を表示する事は可能ですか??

例)
商品名 管理番号 担当者
りんご 1 A
りんご 2 A
りんご 3 A
りんご 5 A

上のようなテーブルがあるとして、下記のようにクエリで表示させる方法はないでしょうか?

りんご 1~3 3個
りんご 5 1個

商品は他にも種類があるので商品ごとで管理番号が連番のものは1行にまとめたいです。
現在はテーブルをエクセルに貼りつけて商品名、管理番号で並べ替えて枚数を計算する式を入れて
ちまちま編集していますが、持ち出す商品数が多いのでとても大変です。
クエリだけでなく、エクセルの式でも良いので簡単にする方法があれば教えて下さい。
宜しくお願い致します。

補足すみません。初めに書いておけばよかったです。
全てテキスト型です。
宜しくお願い致します。

閲覧数:
691
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

mah********さん

2012/5/2112:57:43

クロス集計クエリは縦軸と横軸に構成させることができますから、
近いものにはなります。

商品名 管理番号 担当者
りんご 1 A
りんご 2 A
りんご 3 A
りんご 5 A

から、

クロス集計クエリで、

りんご 1、2、3 、、5
もしくは
りんご 1、2、3
りんご 5

これが前提になるようにデータを加工するとか工夫することです。
今あるデータから、クエリのクエリを作ったりテーブル作成したり、で
なんとかクロス集計クエリができないか。

1レコードで
りんご 1、2、3
になれば、
1~3個、や計3個も出しやすくなるのでそれはその後で考える。
クロス集計クエリならそういう合計数は出せます。

VBAになれば、
1レコードずつの操作ができるので、
りんご 3 A
のときに、
すでに同じものが2レコード存在している、というのは把握できますから、
1~3、3個なども求めやすい。
余裕があればVBAで対処する。


それと、
1レコード目には現在行と過去の行で同じのが1つしかないことから算出して1、
2レコード目には現在行と過去の行で同じのが2つしかないことから算出して2、
3レコード目には現在行と過去の行で同じのが3つしかないことから算出して3、
こんなことをしていると
99レコード目には1+2+3+・・・98、みたいな
100レコード目にはまた算出して1+2+3+・・・99、みたいな
件数が多くなればなるほど非効率なやリ方になるので、
そうなれば処理が遅くなります。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

lll********さん

編集あり2012/5/2116:23:10

++++++++++++++++++++++++++++++++++++
補足見ました。
クエリの作成方法を修正しました。
++++++++++++++++++++++++++++++++++++


クエリだけで可能ですが、定義域集計関数という演算に時間がかかる関数をふんだんに使用しますので、データ件数が多いと不向きだと思います。
クエリの作成方法を説明しますので、やってみて実行に時間がかかるようならVBAを作った方が良いと思いますので、クエリを作成し一度試してみてください。



※クエリは2つ作ります。

●1つ目
【クエリ名】
クエリ演算用
【使用するテーブルまたはクエリ】
元データのテーブル。
【デザイングリッドのフィールド】
商品名、担当者、管理番号。
さらに演算フィールドを6つ記述します。
↓演算フィールドです。
前: DLookUp("管理番号","テーブル名","商品名='" & [商品名] & "' and 担当者='" & [担当者] & "' and 管理番号='" & [管理番号数値]-1 & "'")
次: DLookUp("管理番号","テーブル名","商品名='" & [商品名] & "' and 担当者='" & [担当者] & "' and 管理番号='" & [管理番号数値]+1 & "'")
終: DMin("管理番号数値","クエリ演算用","商品名='" & [商品名] & "' and 担当者='" & [担当者] & "' and 管理番号数値>=" & [管理番号数値] & " and 次 is null")
管理番号FROM~TO: IIf([管理番号数値]=[終],[管理番号],[管理番号] & "~" & [終])
個数: [終]-[管理番号数値]+1
管理番号数値: Val([管理番号])

※テーブル名の箇所だけ元データのテーブル名に書き換えてください。


●2つ目のクエリ
【クエリ名】
何でも構いません。
【使用するテーブルまたはクエリ】
クエリ演算用
【デザイングリッドのフィールド】
担当者、商品名、管理番号FROM~TO、個数、前
・フィールド「前」の表示のチェックを外し(非表示)、抽出条件に「is null」と記述してください。

※クエリのプロパティを開き、並べ替えに「担当者, 商品名, 管理番号数値」と記述すると見やすくなると思います。


--------------------------------------------------------------
作成方法は以上です。
2つ目のクエリを実行してください。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる