Accessクエリで連番を振る!文字列と数値型には注意!

アクセス担当のまみです。

オートナンバーって勝手に番号振ってくれて便利ですね。

便利なんだけど、データの削除した時には欠番になったりして番号を振りなおしてはくれないんです。

そんな時にはクエリで番号が振られるようにしてみましょう。

 

Dcount関数

 

構文
Dcount(フィールド名,テーブル名またはクエリ名,条件式)

クエリで連番を振るにはDcount関数を使用します。

Dcount関数って条件に合うレコードの数を数えてくれます。

 

Dcount関数についての詳しい説明は下記の記事にゆずりますのでぜひ見てみてください!

【Access】Dcount関数を使ってレコード数をカウントする方法

2018年11月19日

 

(はてな君)
クエリで連番が振れたら何が便利なの?

 

(あいちゃん)
オートナンバーで番号を振っていると、レコードを削除した時に欠番になるんだ。

 

 

(はてな君)
あ~そう言えば削除した時って番号が飛んでる~。

 

(あいちゃん)
欠番でも問題ないこともあるけど、連番にしたい時もあるでしょ!

 

使用するテーブル

「T_納品管理表」

 

1から連番を振る

 

Dcount関数で1から連番を振るには、同じデータが複数あるフィールドは使えません。

 

(はてな君)
それって、所属コードとかは使えないってこと?

 

(あいちゃん)
そうそう。101のコードって4個あるよね。他と重ならないデータじゃないとダメなんだよ。

 

(はてな君)
え~っと。じゃぁ「ID」を使えばいいんだ。

 

(あいちゃん)
そのとおり!文字列と数値型とで書き方が違うから注意してね!「ID」は数値型だね!

 

(はてな君)
そっか。オートナンバーは数値型になるんだ。

 

では、リボンのデザインタブからクエリデザインを選択し、「T_納品管理表」テーブルを追加しましょう。

「フィールド」を右クリックして「ズーム」を選択すると大きな画面で編集できます。

 

表示された画面に「連番: DCount(“*”,”T_納品管理表”,”[ID]<=” & [T_納品管理表]![ID])」と入力し「OK」を左クリックしましょう。

 

(あいちゃん)
クエリの準備は以上だよ!データシートビューに切り替えてみてね!

 

 

(はてな君)
わぁキレイに並んだね。これで他のデータも表示させたらいいんだね。

 

 

(はてな君)
全部のフィールド(*)を表示させてみた~!

 

 

グループごとに連番を振る

 

(はてな君)
グループごとに連番って?

 

(あいちゃん)
イメージしにくいかな?実際に見てみようか。

 

(はてな君)
あ~そういうことか。同じ所属の中で順番に番号を振るってことなんだね。

 

(あいちゃん)
所属コードと所属のどちらを使ってもできるんだけど、さっき数値型をやったから文字列の「所属」でやってみる?

 

(はてな君)
そうする~!

 

(あいちゃん)
別のクエリを使用するので、さっき作成したクエリは名前を付けて保存しておくと良いよ!

 

先ほどとは別のクエリで今度はわかりやすいように「所属コード」「所属」を表示させるようにしました。

 

フィールドを右クリックしてズームを選択したら、「連番: DCount(“*”,”T_納品管理表”,”ID <=” & [ID] & “and 所属='” & [所属] & “‘”)」と入力して「OK」を左クリックします。

 

文字列型なので「” & [所属] & “‘”」になります。

 

(はてな君)
数値型と文字列っていつもわからなくなるよ~。

 

(あいちゃん)
そうだね。慣れるしかないかな~。

 

グループごとに同じ番号の連番を振る

 

(はてな君)
グループごとに1から連番を振るのとどう違うの?

 

(あいちゃん)
言葉で説明するよりも実際に見てみた方がいいね!

 

 

(はてな君)
あ~なんか説明難しいけどわかった~!

 

(あいちゃん)
所属コードと所属のどちらでもできるけどどっちでする?

 

(はてな君)
文字列苦手だから「所属」で!

 

先ほどのクエリを上書きするか、コピーするかして連番の式を下記のように書き換えましょう。

 

連番: DCount(“*”,”T_納品管理表”,”[所属] >='” & [T_納品管理表]![所属] & “‘”)

 

(はてな君)
これって、成績順に使えるかな?

 

(あいちゃん)
そうだね。使えそうだね。

 

VBAを使った連番の振り方は下記の記事をどうぞ!

 

アクセスVBAでオートナンバーのように連番を振る方法

2018年10月31日

 

まとめ

 

色々なデータを扱っていると、データを数えるときにも必要だったりと、番号って意外と重要だったりします。

 

欠番にさせたくなかったり色々な番号の使い方があるので、知っておくと便利ですよ!