- ベストアンサー
Access連番の自動振り方
- Accessのフォームで新規入力する際に、特定の形式の連番を自動で振りたいです。
- 連番の形式は、「Eyymmdd A」で、日が変わると再び「A」から始まります。
- 煮詰まってしまい、解決策についてご教授いただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBAで行わねばなりませんけど大丈夫? 新規入力時に今日の日付と照らし合わせて連番を振る場合です。 昨日の文書の連番や未来の日付の連番は考えてません。 Alt + F11 を押して、VBEに切り替えて メニュー→挿入→標準モジュールにて Function getNewSeq() If Format(Date, "yymmdd") = Mid(DMax("管理番号", "連絡文書E"), 2, 6) Then If Right(DMax("管理番号", "連絡文書E"), 1) = "Z" Then MsgBox "Zまで一杯です" Exit Function End If getNewSeq = "E" & Format(Date, "yymmdd") & " " & _ Chr(Asc(Right(DMax("管理番号", "連絡文書E"), 1)) + 1) Else getNewSeq = "E" & Format(Date, "yymmdd") & " " & "A" End If End Function さらに、フォームでも デザインビューでフォームのプロパティのイベントの、「レコード移動時」に Private Sub Form_Current() If Me.NewRecord Then Me!管理番号 = getNewSeq End If End Sub としてみてください。 ※フォーム名とテーブル名が同じなので、 今後VBAの記述が増えれば、パッと見で分かりにくいので 「フォーム名」連絡文書E→F_連絡文書E とかにしておいた方が宜しいかと。 クエリもね。
お礼
早速のご教示ありがとうございました ご連絡が大変遅くなりまして申し訳ございません 緊急事態が発生してしまい、本日より改めて対応する所存です またご教示をお願いすると思いますで、 何卒よろしくお願い申し上げます
補足
お世話になっております 汗かきかきご教示いただいたVBAに取り組んでいますが、 どうしてもデバックがでてしまい、解決方法がわかりません 実行時エラー3078 入力テーブルまたはクエリ’連絡文書E’がみつかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください と、出るので、テーブル、クエリを作成し直したのですが、エラーのままです デバックの箇所は If Format(Date, "yymmdd") = Mid(DMax("管理番号", "連絡文書E"), 2, 6) Then です フォームのプロパティのイベントの「レコード移動時」のコードビルダの入力箇所を フォームをデザインビューで開いた時の詳細連番を振りたいと思っている”管理番号”のテキストボックスのプロパティのイベントの「更新前処理」にしてみたり、 フォームのイベントのビルドのコードビルダにしてみたりしました (思いっきり間違えたことをしているのか??と感じながら(涙)) 恐れ入りますが、何卒ご教示をお願いいたします