テーブルのデータ型を「オートナンバー型」にした時、新規に追加をするときは連続で番号が振られていきますが、
「オートナンバー型」を使わずに番号を自動的に振る方法を考えます。わざわざ、この方法を使う理由は…?
早速フォームを作成します。
テーブル「T_果樹産地」は次のような構造になっています。
フォーム作成のウィザードを利用してフォームを作成したら、フォームに「レコード追加」ボタンを作成します。
「ツールボックス」から「コマンドボタン」を選び、ボタンを作成したい位置へカーソルを移動させます。
図3
図4
図5
「レコード追加」ボタンのプロパティを開く
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)
●オートナンバー型使用時の「レコードを元に戻す」処理>
オートナンバー型を使用した場合には、レコードの削除や元に戻す処理を行った場合に、次のレコードの追加は加算されたナンバーが自動作成される。