ACCESSではレコードに番号を付与するシーンが良くあります。
連番で番号を付与するなら、一般的にはテーブルでオートナンバー型のフィールドを作成するのが最も簡単です。
しかし、何らかの理由でオートナンバーを利用できないこともあるでしょう。
今回は、そんなときのためにクエリで連番を作成する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。
クエリで連番を作成する方法
クエリで連番を作成するためには、DCount関数を使用します。
DCount関数を使って対象のテーブルに対し、各レコードの主キーの値以下のレコード数を調べる、という方法です。
クエリの計算式は以下の形になります。
DCount ( "*" , "テーブル名" , " 主キーのフィールド名 <= " & [主キーのフィールド名] )
以下、例を挙げて具体的にご紹介します。
クエリで連番を付与するシーン
まず、どんな時にクエリで連番を作るでしょうか。
今回はサンプルとして以下の売上データテーブルを準備しました。

売上IDはオートナンバー型のフィールドで主キーにしていますが、途中でIDの数値が飛んでいますね。
データを入力後にレコードを削除すると、オートナンバー型のフィールドではこういう状態になります。
ACCESSのシステム内で利用する主キーとしては、各テーブルとのリレーションさえ保てていれば番号が飛んでいても全く問題ないのですが、表示するためには連番の数値が欲しい時があります。
そんな時にクエリでDCount関数を使って連番を付与しましょう。
DCount関数で連番を付与する
では、早速クエリを作りましょう。
クエリデザインから作成します。

フィールドリストに売上データテーブルを配置し、テーブルの各フィールドを下段のデザイングリッドにドラッグアンドドロップします。
さらに売上IDの右側に演算フィールドとして連番フィールドを追加します。

記載内容は以下の通りです。
連番: DCount("*","売上データ","売上ID <= " & [売上ID])
クエリで演算フィールドを作成する際は:(コロン)で区切り、左側にフィールド名、右側に計算式を記載します。
今回は連番というフィールド名で、Dcount関数を使った式を右側に記載しました。
売上データテーブルの各レコードに対して、自身の売上ID以下のレコード数を数える、という式です。
<=で自身のID以下としておりますので、例えば1レコード目は1が返ってくることになります。
ではデータシートビューで結果を見てみましょう。

このように、連番フィールドが追加されました。
連番の値は主キーである売上IDの数値が飛んでいても連番になっていることが分かると思います。
連番を数値型へ変換
しかし、上記をよく見ると連番の数値が左寄せになっていますね。
数値なら通常は右寄せのはずなので気持ち悪いと感じる方もいるかもしれません。
これは、DCount関数の戻り値がテキストで返ってきてしまっているためです。
そこで、Val関数を使って数値に変換しましょう。
Val関数は文字列を数値に変換する関数です。
先ほどのクエリを少し変更して以下にしました。
連番: Val(DCount("*","売上データ","売上ID <= " & [売上ID]))
Val関数での数値変換を加えています。
結果をデータシートビューで見てみましょう。

このように、数値として右寄せで表示されるようになりました。
上記の方法でクエリで連番を付与することができますが、あくまでテーブル側で一意の主キーがあることが前提です。
ACCESSでは主キーは非常に重要な値ですので、テーブルの主キーはオートナンバーで自動的に付与することをお勧めします。
その上で、連番のフィールドが必要であれば今回のような方法で追加のフィールドを作るようにしましょう。
以上、クエリで連番を作成する方法をご紹介しました。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
