パソコン情報

【Access】日付に連番を付加する

やりたい事の説明

やりたい事は、テーブルのフィールドに、「date_no」というのがあり、フォームの非連結テキストボックス「date_no_input」があります。

「date_no」は、日付(例2021年9月1日)なら、210901001というように、日付+連番が入力されています。

ボタンをクリックした時に、まずは、

やりたい事ポイント

自動で「date_no_input」にテーブル登録の連番からの続きを入力したい

のです。

 

丸パクリできるVBAコード発見

本当に助かります!!

説明もわかりやすく、VBAコードが丸パクリできそうじゃないですか!?

 

下記のVBAコードは自分用に一部書き換えています。

Sub date_number()
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("date_no", "orderdata")
    
    '日付+連番の一番大きいもの日付を取得します
    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
        
        date_no_input = ITEM1

End Sub

 

サンプルのお陰で時短(感謝)

ほとんど丸パクリのVBAコードですが、自分用に修正したところは、

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

と、最後に値を非連結のテキストボックスに入力するコードだけです。

date_no_input = ITEM1

 

丸パクリできるVBAコードで本当に時短することができ感謝です。

今回のノウハウだけじゃなく他にも沢山あるようなので、勝手にリンクを貼って宣伝しておきます。

ココがおすすめ