• ベストアンサー

伝票番号の自動採番について

伝票番号の採番で、西暦+5桁という仕様です。 これを、年が変わってから入力する際に 新しい年(度)+00001 としたいのですが、どのようにプログラムを組んだらいいのか分かりません。 ちなみに今までのプログラムでは Format関数や、DMax関数を使って自動採番していました。 Access2000での開発です。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.3

パソコンのタイマーから・・・・=システムの日付ですかね? どちらにしろできると思いますが・・・・ テーブル名:伝票 フィールド:伝票No(数値型/長整数型)       日付(日付/時刻型) Dim StrSeireki As String StrSeireki = Format(Me.日付, "yyyy") If DCount("伝票No", "伝票", "Left(伝票No,4) = " & StrSeireki) = 0 Then   Me.伝票No = StrSeireki & "00001" Else   Me.伝票No = DMax("伝票No", "伝票") + 1 End If 以上、フォーム上の日付更新時のコードです。 動作確認済み。 システムの時間をご希望であれば Me.日付 → date() にご変更を! 日付更新時に変更されないよう新規レコードのCheckは必要になるとは思いますが。 がんばって下さい。

その他の回答 (2)

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.2

伝票に日付を入力するフィールドがあるのであれば 1)format関数にて西暦の抜き出し 2)Recordset若しくはDCountによりレコード数を取得 3)レコード数0(ゼロ)の時のみ西暦+00001を伝票番号に代入 以上のような方法で如何でしょうか(^ ^)

holse
質問者

お礼

回答、ありがとうございます。 実はこの方法、一度試していたんです。 西暦の抜き出しは、伝票の日付からではなくて パソコンのタイマーからなんですけど・・・ 結果はというと、  新しい年(度)+昨年からの番号の続き という結果でして(汗) 伝票の日付からの抜き出しでも同じことだと思います。 やはりテーブルに直接入力ですかね。 いや、もうちょいがんばってみます。 それでは失礼します

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> DMax関数を使って自動採番していました。 新しい年(度)+00000 のダミーレコードを作成しておく、ではいかがですか?

holse
質問者

お礼

回答、どうもありがとうございます。 はっきり言ってこの方法が一番手っ取り早いですよね。 でもやはり、こういうプログラムって作れるのか、という 興味と自分を試す意味でやってはみたもののなかなか・・・ まだまだ修行が足りないみたいです。(苦笑)

関連するQ&A