戻る

オートナンバーを使わずに番号を自動的に振る−DMax関数

テーブルのデータ型を「オートナンバー型」にした時、新規に追加をするときは連続で番号が振られていきますが、
「オートナンバー型」を使わずに番号を自動的に振る方法を考えます。わざわざ、この方法を使う理由は…?

早速フォームを作成します。

テーブル「T_果樹産地」は次のような構造になっています。

フォーム作成のウィザードを利用してフォームを作成したら、フォームに「レコード追加」ボタンを作成します。

「ツールボックス」から「コマンドボタン」を選び、ボタンを作成したい位置へカーソルを移動させます。

図2

図3

図4

図5

図6

「レコード追加」ボタンのプロパティを開く

Microsoft Visual Basic(VBA)で次の1行を追加します。

  Me! ID = DMax("ID","T_果樹産地") + 1

他のプロシージャ(記述されたところ)は、コマンドボタンを作成したときに自動的に作成されたものです。

図1のように、「ID」の最大値に1を加算する処理を行わせています。

DMax関数:DMax(フィールド名,テーブル名,条件式)と記述します。

ここでは、「ID」がフィールド名、「果樹産地」がテーブル名、「+1」が条件式になります。

◇DMax関数を使うメリットは?(オートナンバー型フィールドの特徴はこちら)

「レコード追加」ボタンを左クリックすると、レコードがテキストデータとして追加されます。

「レコードを元に戻す」ボタンを左クリックすると、IDが削除されます。
更に、「レコード追加」ボタンを左クリックするとIDに「4」が表示されます。

「レコードを元に戻す」ボタンの作り方は、「ツールボックス」−「コマンドボタン」を選び図2から図6のように行います。

「レコードの操作」−「レコードを元に戻す」を選び、ウィザードにそってボタンを作成します。

「レコードを元に戻す」ボタンは、直前の操作にのみ有効です。

「レコードを元に戻す」ボタンのプロシージャは次のように自動生成されます。

◇Undoメソッド

コントロールまたはフォームの値が変更された場合に、コントロールまたはフォームをクリアします。
たとえば、Undoメソッドを使用して、無効なエントリを含むレコードの変更をクリアすることができます。(from Access Help)

●オートナンバー型使用時の「レコードを元に戻す」処理>

オートナンバー型を使用した場合には、レコードの削除や元に戻す処理を行った場合に、次のレコードの追加は加算されたナンバーが自動作成される。