• ベストアンサー

ACCESSの自動連番について

ACCESS2000を使っています。 自動連番を通常すると1・2・3・・・と自動で連番を作成してくれますが、それを日付+連番というものに出来ますでしょうか? 例)1210001   1210002   |   1210100 日付は月と日にちで、連番は3桁です。 数字の連番の方は、日付が変わるとまた1に戻るようにしたいです。 何か良い方法があったら教えてください。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

入力フォームのデザインで、メニューら[表示]-->[プロパティ]で「レコード移動時」欄を クリックし、右端の ... をクリックして、「コードビルダ」で開いたウィンドウに下記 コードを貼り付けます。 レコードソースになっているテーブル名を「自動採番月日TBL」とし、自動採番する フィールドは、数値型で名前を「ID」とした場合です。 これで、ご希望通りの動作になると思いますが、年が入っていないのが気になります。 このままでは、1年以上使っていると、昨年の番号の連番を取得します。 年を考慮することをお勧めします。 Private Sub Form_Current() If Me.NewRecord = False Then Exit Sub Dim AutoID As String Dim MaxID As Variant AutoID = Format(Date, "mmdd") MaxID = DMax("ID", "自動採番月日TBL", "Left(ID,4)=" & AutoID) If IsNull(MaxID) Then   Me.ID.DefaultValue = AutoID & "001" Else   Me.ID.DefaultValue = AutoID & Format(Right(MaxID, 3) + 1, "000") End If End Sub

myutarou
質問者

お礼

ありがとうございます。 教えていただいた方法をさっそく試してみましたが、あっという間に目的の事が出来ました。 年は考慮してやろうと思います。 本当にありがとうございました。

その他の回答 (1)

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

お求めの結果をテーブルの一つのフィールドの設定で出すのは無理だと思います。 画期的な方法は思いつかないのだけれど、以下参考になれば、と思います。 まず、乗り越える壁として日付が変わったという判定をどのように行うかという問題があります。 一般的には、直前の日付を調べて異なっていたら日付が変わったと見なすという方法が採られます。 日付のフィールドをカウントの日付と別に作って、規定値を「=Format(Now(),"yyyy/m/d")」とか「=Val(Format(now(),"ddmm"))」のように設定すると、後の処理が楽になります。 前者は日付形式で時刻を取ったもの、後者は連番フィールド用に数値化したものです。 その日付フィールドの値を、直前のレコードと比較します。 で、カウンタフィールドも別に設定して、日付が変わったら初期化するカウンタにします。 こちらはフォームのイベントで処理するしかないように思います。 詳しいことは省きます。 要点は、日付が変わったら初期化する。そうでなかったら直前の値に+1する。という処理を更新後処理に書き込むと言うことです。 別のアイディアとして、自動連番のフィールドから読みとるという方法があります。 この場合は、別のテーブルに日付が変わった最初の連番を登録しておきます。 日付と連番の先頭を登録するのです。 そのテーブルに登録されていない日付のときはそのレコードの連番を新規に登録します。 登録されていれば、その番号と連番の差+1が現在のカウンタ値になります。 これをお求めのフィールドに設定すればOKです。 が、これらの処理もフォームでのイベント処理にしなければなりません。 めんどくさいですな。

myutarou
質問者

お礼

ありがとうございます。 教えていただいたアイデアを元に考えてみようと思います。

関連するQ&A

  • ACCESSで日付ごとに自動連番(日付+連番)する方法

    ACCESSで日付ごとに自動連番(日付+連番)する方法 ACCESSとvba、共に初心者です。 ACCESS2003を使用しています。日付ごとに自動連番する方法が知りたくいろいろ調べていたところ過去ログ(http://okwave.jp/qa/q726921.html)のベストアンサーさんの回答にたどりつきました。 とりあえず勉強と思い紹介されている通りにテーブル作成からフォームのレコード移動時へのコード貼り付けまで一通り行ってみましたが、自動連番とならず同じ番号のままとなってしまいます。(日付はパソコンの日付更新時にちゃんと反映されています。) 自動連番されないのは何が原因なのでしょうか。どなたかご教授の程よろしくお願いします。 例)DATEが5月5日の場合のIDへの記載値  0505001  0505001←ここが001のまま0505002にしたい。  0506001←日付が変われば0506(5月6日)に変わる。 以上、よろしくお願いいたします。

  • Accessで指示書番号の自動採番

    入力フォームで指示書番号が自動採番され、テーブルにも保存されるようにするための方法を教えていただけないでしょうか。 テーブル:T_指示書 フィールド:指示書番号 フィールドはテキスト型で、番号の構成は8桁の番号で "年(二桁)" + "月(二桁)" +"部署番号(一桁、固定の数字)"+ "連番(三桁)" (例:09091001) という感じで、 年月が変われば、連番が001になるようにしたいです。 どなたか、ご教授いただければありがたいです。 よろしくおねがいします。 Access2002 winXP

  • ACCESS フォームに自動連番をふる

    Accessでテーブル→クエリ→フォームと作成し、フォームから特定条件を指定して データを抽出しました。 その抽出したデータに自動連番をつける方法を教えてください。

  • 独自の形式で連番をふりたい(Access97)

    Windows98SE + Access97 現在ユーザーサポートの「問い合わせ管理簿」を作成しています。 ユーザーから新しい問い合わせがあるたびにレコードを一つずつ 増やしていくわけなのですが、そこに独自の形式の連番を振りたいのです。 「"年(4桁)" - "月(2桁)" - "その月での問い合わせ件数 + 1(3桁)"」という形式です。 具体的には、今日が2002年1月28日で、1月の問い合わせ件数が30件だと すると、「2002-01-031」という形式で新しいデータに連番を振りたいの です。 2月になったら「2002-02-001」から始まります。 これを実現するにはどういったロジックが考えられるでしょうか。 助言をお願いいたします。

  • エクセル 自動で連番ができない

    連番で数字が入力してあるセルがあり、 最後の数字が入力されているセルの右下にあわせ、 自動で連番の続きを出そうとしたのですが、 同じ数字が続くばかりです。 どこか設定を変える場所があるのでしょうか。 よろしくお願いいたします。

  • アクセスで社員番号を自動で振る方法を教えてください。

    アクセスで社員番号を自動的に振る方法を教えてください。 アクセスは2003を使用しています。 社員番号の構成は7桁で、「1008001」このような番号が振られています。 頭2桁の「10」は固定です。次の2桁「08」は入社年度によって変わります。2008年4月1日以降2009年3月31日までの入社は「08」、2009年4月1日以降2010年3月31日までの入社は「09」というようになります。最後3桁は連番になります。ただ、「08」から「09」になったときはまた「000」からスタートになります。このような社員番号を入社年月日を入れたら自動的に発番される方法はないでしょうか? どうかご教授お願い致します。

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

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

  • Word2003で,自動連番に四角の囲い枠をつけたい

    フィールドの更新をすることで,四角で囲まれた通し連番を作成できる方法を教えてください。 現在,Word2003のフィールドコードを使用して, {ex \x (1)} ..., {ex \x (2)}..., ...。 のように,連番の数字の囲い込みを行って資料を作成しています。これらの数字を自動で連番にしつつ,かつ上記のように囲い込みの罫線を適用する方法がありましたら教えてください。 現在は,上記のように手動で数字の入力をしているため,例えば"2"が削除になったら,以降の"3"→"2","2"→"1"の更新作業を全て手作業でしている状態なんです。。 どうぞよろしくお願いします。

  • ACCESSのデータに自動で半角スペースを入れたい

    ACCESSのデータに自動で半角スペースを入れたい 例えば フィールドサイズ:15(テキスト型) のフィールドに10桁の数字を入力 した場合、残りの5桁に自動的に半角スペース(もしくは「0」)を入力する方法はないでしょうか? 例)  1234567890 → 000001234567890         → @@@@@1234567890(@は半角スペース) テーブル・クエリどちらでもかまいませんので教えてください。 よろしくお願いします。

  • 自動採番

    エクセルで申請があったものに対して、フォーマットのある 箇所に採番をしなければいけませんが、毎回打ち込むのは 大変です。 「○○○-070724○」「三桁の数字-yymmdd○(連番)」 (最初の三桁の数字のものに対して連番/ex”123″のものが 070724に3件発生した時に123-0707241→123-0707242→ 123-0707243となるように採番したいですが、いい方法は ないものでしょうか?○○○の部分はジャンルで、多数 存在します。 せめて「○○○-yymmdd○」の「-yymmdd○」の部分だけ でも出るようになれば楽になります。CONCATENATE関数で 「CONCATENATE("-",TODAY(),・・・」で出来ないものかと 試していますが、TODAY関数5桁数字が出てきてしまいます。 自動採番のやり方もわかりません。 自動採番出来るスタンプみたいな事はエクセルで出来ませんか? わかる方がいらっしゃいましたら、教えてください。 よろしくお願いします。   

専門家に質問してみよう