Accessでグループ毎の連番を振る
Accessでグループ分けされているデータがあり、それらのグループごとに連番を振りたいとき。
このテーブルに、Group1に1,2,3,…、Group2に1,2,3,…と連番を振る。
そういう時に、DCount関数を使って以下のようにするといいらしいです。
DCount("*","【テーブル名】","【ID】 <=" & [【ID】] & "and 【グループ名】=" & [【グループ名】])
詳細は以下の通り。
【テーブル名】振りたい連番があるテーブル名。
【ID】そのテーブルの主キーとなるフィールド。
【グループ名】グループ連番の親となるグループのフィールド名。
このようなクエリになります。
DCount("*","test","ID <=" & [ID] & "and Group=" & [Group])
あとは更新クエリで、G連番をこのクエリで更新するだけです。
ただし、グループが文字列などの場合はこのクエリは使えないので、数字に置き換えておくなどしましょう。
こんな感じに一気に割り振ってくれます。
既存のグループ連番に追加したい場合は、グループごとの連番の最大値を集計クエリで計算してフィールドに入れておいて、その最大値+新しい連番の値を入れていけます。
グループごとの最大値をとったテーブルを作って、その値を元のテーブルに反映させるとか。他にも良い方法はありそうですが。
プログラムを組んだ方が色々融通も利きそうですが、クエリひとつでもできるので単純なテーブル構造のときに。