- ベストアンサー
【Access】自動で番号を発行したい
フォームを使って入力を行っているのですが、 オートナンバーのように自動で番号を発行したいフィールドがあります。 番号の例: 20050704-001 要するにその日の日付と連番です。 連番は日付が変わるごとに001から始まるようにしたいのです。 どうすればできますか?
- みんなの回答 (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
お礼
ありがとうございました。 中身は理解できていませんが、 うまくいきました。 これから使用している関数などを調べて、 意味を理解したいと思います。