●全ページ一覧の表示(ページ下へ移動)>>

▲PAGE TOP

日付別の通し番号(連番)を付ける


NO 内容 分類 発行日
vol285 日付別の通し番号(連番)を付ける VBA 2017年5月24日

お客様から質問がありました。

新規レコードを登録するときに、「項目+連番」で登録したいということです。

こういうケースって多いですね。

例えば、
売り上げ伝票などを作成する場合です。
売上伝票の番号などに連番を作成したい場合です。
通常は、この項目は「主キー」になります。

「主キー」ですので、オートナンバーを使用することもできますが、日付+連番などで作成したい場合があります。

日付などを入れておくと、その売上伝票がいつ作成されたのか把握することが出来ます。

今回は、日付別の通し番号(連番)の作成方法について説明します。

以下のVBAは、毎日の日付別に、3桁の番号を振っています。

今日が、2017年の5月24日ですと、「170524001」、「170524002」などです。

年(2桁)月(2桁)日(2桁)+連番(3桁)です。
yymmdd+001です。

この「主キー」の項目は、全部番号ですが、テキストにしておいた方が良いと思います。

説明をVBAの中に入れています。

「OPE_NO」という項目が、日付別の通し番号(連番)になります。

VBAを使用するときは、「'」のコメントの行は削除してください。


*************************************

Dim MAX_NO As Variant
Dim YR As Variant
Dim MO1 As Variant
Dim DT1 As Variant
Dim ITEM1 As String
Dim NO As Variant
Dim R_MAX_NO As Variant
Dim CNT1 As Long

'今日の日付から年の下の2桁を持ってきます
YR1 = RIGHT(Year(Date), 2)

'今日の日付から月の2桁を持ってきます
MO1 = Format(Month(Date), "00")

'今日の日付から日の2桁を持ってきます
DT1 = Format(Day(Date), "00")

'yymmddの今日の日付を作成します
YMD1 = YR1 + MO1 + DT1

'日付+連番の一番大きいものを取得します
MAX_NO = DMax("OPE_NO", "Q_OPE_INFO")

'日付+連番の一番大きいもの日付を取得します
LEFT_MAX_NO = LEFT(MAX_NO, 6)

'日付+連番の一番大きいものがNullのときは今日+001を取得します

If IsNull(MAX_NO) Or MAX_NO = "" Then

ITEM1 = YMD1 + "001"

'日付+連番の一番大きいものがNullでないときで今日と異なっていれば今日+001を取得します

ElseIf YMD1 <> LEFT_MAX_NO Then

ITEM1 = YMD1 + "001"

'それ以外の処理です。


Else

'日付+連番の一番大きいものの右の3カラムの番号を取得します
R_MAX_NO = Mid(MAX_NO, 7, 3)

'番号を数字に直して1をプラスします
CNT1 = Val(R_MAX_NO) + 1

'日付+番号をテキストにします
ITEM1 = YMD1 + Format(CNT1, "000")

End If


'最後に、作成された日付+番号をOPE_NOに入れます。
Me!OPE_NO = ITEM1

***********************************

番号付けはよく使用します。

参考にしてください。



おすすめ教材


就職・転職にはマイクロソフトオフィスの知識が必修です。





[↑一番上へ]
[マイクロソフトアクセス(Access)活用法(メールマガジン)(ホームへ)]
11:341108

<<全ページのメニューリストです>>

アクセス(Access)の概要

アクセス(Access)全体

テーブル

クエリ

フォーム

レポート

マクロ

VBA

SQL Server

システム開発

SQL Azure

その他