access 自動採番 年が変わるごとに0001に戻る仕組み。
宜しくお願いします。
使用環境:access(2002-2007)
前回の続きでもありますが、自動で番号を採番する仕組みを作りました。
(一応、前回分も・・)http://oshiete1.goo.ne.jp/qa5742518.html
「10AA0001」から始まり、あとは後ろの数字が0002,0003~と増えていく仕様で出来ました。
最初の「10」というのは2010年のうしろ二桁の「10」です。(date関数)
(相談)
これを2011年になったら、後ろの数字を0001に自動的にセットし直す仕様にしたいのです、
そこから0002,0003~と増えるようにして、また年が変わるごとに0001にセットされるような仕組みにしたいです。
検索サイトで調べるとやり方が出てくるのですが、
まだVBAの理解力がないので、まったくもってわかりません。
たぶんIfで示されるDcount関数に関係があるのかなー、という気はします。
(前置きの部分なので)
僕にはちょっとレベルが高いかも知れませんが、理解できるよう努力します。
以下に、構文を書きます。
また来年になるまで「実際、変わるか検証ができない」というのもアレなので、
テスト環境ではnow関数を使い「hhnn」でやってます。
「分」が変わるごとに0001に戻れば自分なりにOKだと思っています。
(now関数で連番動作することは確認できました)
・・・・・・・・・
'------------------------------------------------------------
' Form_BeforeInsert
'
'------------------------------------------------------------
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo Form_BeforeInsert_Err
If (DCount("見積り番号", "案件") = 0) Then
見積り番号 = "00AA0001"
Exit Sub
End If
見積り番号 = Right(Format(Date, "yyyy", 2), 2) & Format(DMax("Right(見積り番号,4)", "案件") + 1, "AA" & "0000")
Form_BeforeInsert_Exit:
Exit Sub
Form_BeforeInsert_Err:
MsgBox Error$
Resume Form_BeforeInsert_Exit
End Sub
・・・・・・・・・
○ now関数の場合 ※一文のみ抜粋
・・・・・
見積り番号 = Right(Format(Now, "hhnn", 2), 2) & Format(DMax("Right(見積り番号,4)", "案件") + 1, "AA" & "0000")
・・・・・
教えてください、宜しくお願いします。
お礼
回答、ありがとうございます。 実はこの方法、一度試していたんです。 西暦の抜き出しは、伝票の日付からではなくて パソコンのタイマーからなんですけど・・・ 結果はというと、 新しい年(度)+昨年からの番号の続き という結果でして(汗) 伝票の日付からの抜き出しでも同じことだと思います。 やはりテーブルに直接入力ですかね。 いや、もうちょいがんばってみます。 それでは失礼します