自身の仕事ではないのだけれど、Accessでレコードに連番を振る時のメモ。
基本的に私はVBなど高度な技は使えないので、クエリーと関数、そしてマクロだけで簡単にしたい。
この連番の振り方を使うにはいくつか前提条件がある
- 連番(レコード)の並び順が厳格ではない
- 仮に想定の逆順に連番が付いても問題は無い
- 連番付与後はレコードの追加削除を行わない
(つまり、連番付与後の変更は振り直しで対応) - その他、何かあるかも・・・
今回は作成したデータに連番を振りたい(その後テキスト出力)だけなので、上記の条件でも問題ないはず・・・たぶん。
手順
- 連番にオートナンバー型を使うため、連番付与したいテーブルを基にオートナンバー型フィールド[AUTONUM]を追加したテーブルを新規作成
- 新規テーブルのデータを一括削除するクエリーを作成
- 新規テーブルに元データを追加するクエリーを作成(データを逆順に追加するのを推奨)
- 新規テーブルに連番をつける(選択)クエリーを作成
- 新規テーブルから必要なデータをぶち込む
- 新フィールド
[連番:=Dmax([AUTONUM])-[AUTONUM]+1]
を追加(※Dmax式テキトーw) - [連番]を昇順に設定
- 2-3を実行して4をテキスト出力するマクロを作成
以上で完成。
テキトーな解説をするとDmaxでオートナンバーの最大数を拾って、そこからオートナンバーのデータをマイナス、そしてプラス1。
例えば、オートナンバーの最大が100だと、
100 - 100 + 1 = 1
で、オートナンバーが99 のレコードは、
100 - 99 + 1 = 2
となる。
なんとも手っ取り早い方法ではあるけれども、レコードの追加削除にはオートナンバーの振り直しからスタートしなければならないし、オートナンバーとは逆順で連番を振るので、元データに順番を示す数値フィールド等が無いと、まるまるデータは逆に並んでしまう。
もっとスマートな方法があるようにも思うし、それ以前にAccessに連番を振る関数があっても良いように思う。
桐にはあるらしい。
もしかして最新のAccessならあるんじゃないか?
ファイルメーカー FileMaker Pro 14 Advanced 1User License
- 出版社/メーカー: ファイルメーカー
- 発売日: 2015/05/13
- メディア: CD-ROM
- この商品を含むブログを見る
Microsoft Access 2016 [ダウンロード][Windows版](PC2台/1ライセンス)
- 出版社/メーカー: マイクロソフト
- 発売日: 2015/09/30
- メディア: Software Download
- この商品を含むブログを見る