|
クロス集計クエリ自体をいじくって、
>(日付) 佐藤 佐藤2 本田 川村
>2015/4/10 ○○○ ●●● ×××
というようなクロス集計クエリを作ることは、できないと思います。
社員フィールドには、「佐藤2」なんていう値がないからです。
もっと違った形でデータを表示した方がいいとは思います。
例えば、サブフォームを使うとか、サブデータシートを使うなどの方法です。
でも、一覧性に欠けてしまいますね。
結局、良い方法は思いつきませんでした。
なお、上記のような形のクロス集計クエリを作る方法がないわけではありません。
クロス集計クエリの元になるクエリの段階で、例えば、「佐藤」を「佐藤2」に書き替えればいいのです。
もうちょっと具体的に言うと、クロス集計クエリの元になるクエリ(Q集計元1)が
日付 作業内容 社員
2015/4/10 ○○○ 佐藤
2015/4/10 ●●● 佐藤
2015/4/10 ××× 本田
2015/4/11 ▽▽▽ 本田
2015/4/11 ◇◇◇ 川村
2015/4/13 ▲▲▲ 佐藤
2015/4/13 ΘΘΘ 川村
となっているとすると、このクエリをいじって、
日付 作業内容 社員枝番付き
2015/4/10 ○○○ 佐藤
2015/4/10 ●●● 佐藤2
2015/4/10 ××× 本田
2015/4/11 ▽▽▽ 本田
2015/4/11 ◇◇◇ 川村
2015/4/13 ▲▲▲ 佐藤
2015/4/13 ΘΘΘ 川村
となるようなクエリ(Q集計元2)を作るということです。
問題は、同じ日付で2番目に出てくる「佐藤」を「佐藤2」に変える方法です。
基本的にアクセスは、他のレコードの値によって自レコードの値を決める
ということができません。
DLookup関数やDCount関数などのいわゆるD系関数を駆使すれば可能なのですが、
クエリでD系関数を使うと、クエリを開くのに時間がかかってしまいます。
下手をすると、クエリを開くのに数分かかります。
しかし、ワークテーブルを使えば、スピードアップできます。
なお、ワークテーブルとは、一時的にデータを格納しておくテーブルのことです。
ワークテーブルに「作業内容番号」と「社員枝番付き」を書き込んでいき、
このワークテーブルと作業内容テーブルを結合させたクエリを作ります。
このクエリがQ集計元2です。
ワークテーブルに「作業内容番号」と「社員枝番付き」を書き込む方法ですが、
まずは作業内容番号を書き込みます。
具体的には、追加クエリを使って、Q集計元1から作業内容番号フィールドだけを
ワークテーブルに追加します。
次いで、Q集計元1とワークテーブルとを
各「作業内容番号」フィールドで結合させ、
かつ、然るべく並び順を指定したレコードセットを作ります。
そして、このレコードセットを先頭からループさせ、
「社員」フィールドの値に枝番を付けるかどうか、
付けるとしたら何番を付けるかを判断し、
「社員」フィールドの値に枝番を付けていきます。
なお、この方法は、
Recordset_連続番号の振り方:SampleFile071
ht tp://www.accessclub.jp/samplefile/samplefile_71.htm
を応用したものです。
|
|