- ベストアンサー
伝票番号の自動採番について
伝票番号の採番で、西暦+5桁という仕様です。 これを、年が変わってから入力する際に 新しい年(度)+00001 としたいのですが、どのようにプログラムを組んだらいいのか分かりません。 ちなみに今までのプログラムでは Format関数や、DMax関数を使って自動採番していました。 Access2000での開発です。 どうぞよろしくお願いします。
- みんなの回答 (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)
伝票に日付を入力するフィールドがあるのであれば 1)format関数にて西暦の抜き出し 2)Recordset若しくはDCountによりレコード数を取得 3)レコード数0(ゼロ)の時のみ西暦+00001を伝票番号に代入 以上のような方法で如何でしょうか(^ ^)
- bin-chan
- ベストアンサー率33% (1403/4213)
> DMax関数を使って自動採番していました。 新しい年(度)+00000 のダミーレコードを作成しておく、ではいかがですか?
お礼
回答、どうもありがとうございます。 はっきり言ってこの方法が一番手っ取り早いですよね。 でもやはり、こういうプログラムって作れるのか、という 興味と自分を試す意味でやってはみたもののなかなか・・・ まだまだ修行が足りないみたいです。(苦笑)
お礼
回答、ありがとうございます。 実はこの方法、一度試していたんです。 西暦の抜き出しは、伝票の日付からではなくて パソコンのタイマーからなんですけど・・・ 結果はというと、 新しい年(度)+昨年からの番号の続き という結果でして(汗) 伝票の日付からの抜き出しでも同じことだと思います。 やはりテーブルに直接入力ですかね。 いや、もうちょいがんばってみます。 それでは失礼します