Accessでオートナンバーを使わずに連番を作成する
Accessで連番を自動的に割り振るオートナンバーは便利ですが、フォーマットや自由入力などが効かないので柔軟ではありません。
オートナンバーを使わずに連番を作成する方法を紹介します。
例として使う名簿テーブルの構成は次のようになります。会員番号に連番を作成します。
オートナンバーと同じような連番を作成する
まずは、オートナンバーと同じように1から始まる連番(1、2、3 … )を作成します。
- 名簿データを入力するフォーム(例:名簿フォーム)をデザインビューで開き、連番を作成する会員番号フィールドの「規定値」の「…」をクリックします。
※「既定値」はフォームが表示されたときに自動入力するデフォルトの値を設定する項目です。
- 開いた式ビルダに式を入力します。これは、会員番号のテキストボックスに連番を自動入力する式です。
考え方は単純で、集合の最大値を取得するDMax関数を使って「名簿テーブルの会員番号フィールドの最大値に1を加算する」という式を組み立てます。ただし、次のように記述するだけでは不十分です。
○名簿テーブルの会員番号の最大値に1を加算する
=DMax("[会員番号]","名簿")+1これでは、先頭のデータを入力する時点では会員番号の最大値が取得できないので、先頭の番号が0になるなどして、うまくいきません。
そこで、上記の結果がNULLだったら1を入力、それ以外は最大値 + 1を入力するように分岐させます。それには、「Nz(調べる値,指定値)」と記述して、調べる値がNULL(空っぽ)だったときに指定値を入力できるNz関数を使う方法があります。
会員番号の連番の例では次のようになります。
○入力する式
=Nz(DMax("[会員番号]","名簿")+1,1)このコードを式ビルダに入力します。
- フォームを保存して、データを入力してみましょう。
先頭のデータには会員番号「1」が割り当てられます。
- 次のデータは会員番号が「2」になります。
- 会員番号は自由に編集できる点で、オートナンバーよりも柔軟です。
- その場合でも、次のデータには常に、最大値 + 1の連番が割り当てられます。
年+通し番号の連番を作成する
年+通し番号の連番というと難しく感じるかもしれませんが、上記の編集できる連番を作成すれば、単純に「2013001」のような数値を入力するだけで済みます。
数値なので、次に入力するデータには自動的にカウントアップされた連番が割り当てられます。