Windows XP & Office 2003 Access 2003

オートナンバー型を使わずに自動的に連番を入力

投稿日:2017年1月7日 更新日:

Accessのテーブルでコードなどに、オートナンバー型を使っているとなにかと不便を感じることもあります。

番号に欠番が生じた場合、再度、番号を振りなおすのが面倒なんですね。

オートナンバーを振り直す方法はいろいろあります。

以下は、私が一番簡単だと思う方法を解説しています。

オートナンバー型の番号の振り直し(リセット)

Accessのテーブルでフィールドのデータ型を[オートナンバー型]にして、レコードを削除すると、そのレコードは欠番になります。 以下のテーブ ...

続きを見る

追加クエリを使って振り直す方法もあります。

追加クエリを使ったオートナンバー型フィールドの番号の振り直し

オートナンバー型のあるテーブルでレコードを削除すると、欠番が出てしまいます。 Accessにとっては問題はなくても、見た目としては1から綺麗 ...

続きを見る

Excelにエクスポートして番号を振りなおして、再度、それをインポートする方法もあります。

オートナンバーの振り直しができても、やっぱり、できるだけ面倒なことは避けたいですよね。

オートナンバー型を使わずに自動的に連番を入力していく方法です。

いくつか方法はあるようですが、その中の一つの方法と思ってくださいね。

データ型を数値型に

下のような[管理テーブル]があります。[ナンバー]フィールドのデータ型は、数値型にします。

主キー]の設定をします。

テーブル データ型

そして、[管理テーブル]を基に作成した入力用のフォームがあります。

テーブル

注意フィールド名を[NO]にすると、動作しないので[NO]以外のフィールド名にしてください。

挿入前処理のイベントにコードを入力

入力用のフォームをデザインで開いて、フォームセレクタをダブルクリック。

フォームのプロパティを表示させます。

[イベント]タブから[挿入前処理]プロパティのビルドボタンをクリックします。

イベントタブ

コードビルダを選択して[OK]ボタンをクリック。

ビルダの選択

下のようにコードを書きます。

[ナンバー]はテキストボックスの名前です。

[管理テーブル]は、テーブルの名前です。

赤線の部分だけ書き直します。

管理テーブルのレコード件数を数えて、0だったら1を返して、それ以外なら管理テーブルの中で一番大きな値に1を足したものを返すというものです。

If DCount("ナンバー", "管理テーブル") = 0 Then
Me![ナンバー] = "1"
Else
Me![ナンバー] = Format(DMax("ナンバー", "管理テーブル") + 1)
End If

VBE

これでOKです。

もしも、データが入力された後なら、下のように一行だけでもいいです。 ([ナンバー]フィールドに[1]が入力された後ならという意味です)

Me![ナンバー] = Format(DMax("ナンバー", "管理テーブル") + 1)

VBE

ビューを切り替えて、入力してみます。

ナンバーには入力しないで[所属]フィールドで選択(入力)した時点で自動的に番号が振られると思います。

フォームビュー

ナンバーテキストにカーソルが移動しないように設定

ナンバーテキストには、カーソルが移動しないようにした方がいいかもしれませんね。

[ナンバー]テキストボックスのプロパティの[データ]タブから、[使用可能]を[いいえ]、[編集ロック]を[はい]にします。

これで、ナンバーのテキストボックスにはカーソルは移動しなくなります。

データタブ

ビューを切り替えて、確認してみてください。

フォームビュー

レコードを削除して欠番を使用する場合

管理テーブルでナンバー3のレコードを削除したとします。

テーブル

テーブルで新しくナンバー3を入力します。

入力

フォームを開くと、ちゃんと並び変わっています。もちろんテーブルも昇順になります。

フォームビュー

参考DMax関数とDCount関数については、Microsoftの記事を参照してください。

DMin、DMax 関数 - Access(Microsoft)

DCount 関数 - Access(Microsoft)

DMax関数は、以下の記事でも使用しています。

ファイルのバージョンが異なる場合はメッセージを表示して更新をお知らせ

Accessでデータベースを作成して、それを複数人で共有する場合、データベースを分割して、リンクテーブルがあるフロントエンド側にフォームやレ ...

続きを見る

以下は、DCount関数を使用した記事です。

重複データが入力されたらオリジナルのメッセージを出す

Accessのフォームで受付番号を入力するように作成しています。 受付番号を入力したときに、既に入力済みの番号であればメッセージウィンドウを ...

続きを見る

0を除く平均値を求めるには(Sum関数とDCount関数)

Accessでアンケート集計を作成することになりました。 各質問に[0から5]の5段階の評価をつけもらうことにしました。 ただし、[0]は、 ...

続きを見る

テーブルにレコードがない時にメッセージウィンドウを表示する

Accessのテーブルでレコードが1件もない時、そのテーブルを基にして作成したフォームを開こうとする場合は、[データがありません]というメッ ...

続きを見る

重複しないデータの個数とレコードの抽出件数を自動表示

Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...

続きを見る

フィールドの同じ値の数をカウントするにはクエリでグループ化

クエリのグループ化は、グループごとに集計できる便利な機能です。 たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...

続きを見る

バージョンの確認

他の記事も検索してみませんか?

もっと理解したいあなたへ

おすすめ記事と広告

Profile

執筆者/はま

-Windows XP & Office 2003 Access 2003

Copyright © 2001-2021 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2021 AllRights Reserved Powered by AFFINGER4.