pickup

目次

自動採番

こんにちは。伊川(@naonaoke)です。

ACCESSには、規定の機能で、IDが主キーとなり、オートナンバーで採番されます。

しかし、オートナンバー以外でも、自動採番をする方法があります。

とても簡単ですので、ぜひ、この機会に覚えてください。

問題提起

(株)IKAWAの阿久 世子男(アク セスオ)は、

上司から下記の依頼を受けました。

ACCESSで、連番を自動できないか?

どのような方法があるだろうか?

 

解決策

回答
sesuo2.jpg
・Dmax関数と、NZ関数を利用して、連番を自動発行する。

 

NZ関数と、Dmax関数

NZ関数
フィールドが空白のときに、一般的には、0を返す設定をします。
Dmax関数
特定のフィールドで、一番大きな数字を返します。

 

NZ関数と、Dmax関数で自動採番 作成手順その1 データベース確認


今回は、年月日に自動採番された番号を合体させます。

契約番号1と、契約番号2は同じものになります。

また、年月日は、そのままでは、自動採番の番号を合体させることができないので、Format関数を使います。

Format関数については、上の記事を確認してください。

NZ関数と、Dmax関数で自動採番 作成手順その2 コードを仕込む

面倒なので、名前が更新されたら、すべての処理が完了するようにしました。

 

NZ関数と、Dmax関数で自動採番 作成手順その3 コードを解説


Private Sub コマンド53_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec

End Sub

Private Sub 名前_AfterUpdate()


Me.[日時] = Date

'--------------契約番号_1の採番------------------


Dim a As String                    '文字を扱う変数を宣言する

a = Format(Me.[日時], "yyyymmdd")  '日時に入力されたyyyy/mm/dd を yyyymmddへ変換する

Me.[契約番号_1] = a & Me.[ID]    '変数a(yyyymmdd)にオートナンバーのIDを &でつなげる


'--------------------契約番号_2------------------

Me.会員番号 = Nz(DMax("[会員番号]", "MT_自動採番") + 1, 1)  '会員番号に連番をふる

Dim aa As String                    '文字を扱う変数を宣言する

aa = Format(Me.[日時], "yyyymmdd")  '日時に入力されたyyyy/mm/dd を yyyymmddへ変換する

Me.[契約番号_2] = aa & Me.[会員番号]    '変数aa(yyyymmdd)に会員番号を &でつなげる

End Sub


ここがポイント

ここがポイント
Function8.png
ACCESSでは、Dmax関数、Dsum関数を

今回のような方法でよく使います。ただし、Excelと違って使いすぎると、

ACCESSの作動が重くなりますので、注意しましょう。

 

 

まとめ

今回のまとめ
sesuo6.jpg
今回は、契約番号1と契約番号2が、たまたま同じになりました。しかし、自動採番は、商品番号に枝番をつけるなど、色々用途があります。

今回のサンプルファイルは、No97です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事