• ベストアンサー

【Access】自動で番号を発行したい

フォームを使って入力を行っているのですが、 オートナンバーのように自動で番号を発行したいフィールドがあります。 番号の例: 20050704-001 要するにその日の日付と連番です。 連番は日付が変わるごとに001から始まるようにしたいのです。 どうすればできますか?

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 > オートナンバーのように自動で番号を発行したいフィールドがあります。 VBA でやることになります。 下記ユーザー定義関数 NewNumber は、yyyymmdd-000 形式の番号を返します。 コードを標準モジュールに貼り付け、コード内のテーブル名やフィールド名 を書き換えて下さい。 '---ここから---------------------------------------------------------- 'yyyymmdd-000 形式の番号発行関数 Public Function NewNumber() As String   Dim strFld As String   Dim strTbl As String   Dim strDat As String   Dim lngNum As Long      '書き換えて下さい---------------   strFld = "number" 'フィールド名   strTbl = "table1" 'テーブル名   '-------------------------------      strDat = Format$(Date, "yyyymmdd")   lngNum = Nz(DMax( _         "Right$(" & strFld & ",3)", _         strTbl, _         strFld & " LIKE '" & strDat & "-*'"), 0) + 1   NewNumber = strDat & "-" & Format$(lngNum, "000") End Function '---------------------------------------------------------ここまで---- 使い方ですが、テーブルの規定値には直接設定できません。したがって、 フォームを作成することになりますが、方法は2つ。 1. 自動で番号を発行したいフィールドをソースとするコントロールの   プロパティで[データ]-[規定値]欄に NewNumber() と入力する 2. Form の BeforeInsert イベントなどに次のコードを記述する   Private Sub Form_BeforeInsert(Cancel As Integer)     '「自動で番号を発行したいフィールド」をソースとする     ’コントロール名に書き換える     Me![number] = NewNumber()   End Sub

freednia
質問者

お礼

ありがとうございました。 中身は理解できていませんが、 うまくいきました。 これから使用している関数などを調べて、 意味を理解したいと思います。

関連するQ&A