Access2000で銀行管理DBを作成する際の自動採番について

このQ&Aのポイント
  • Access2000で銀行管理DBを作成する際に、入力番号の自動採番方法を知りたいです。入力番号の構成は年と月を含み、数値10桁で連番にしたいです。
  • 入金用と出金用のテーブルを作成し、それぞれにデータ入力用フォームも作成したいと考えています。
  • 実現するためには、採番テーブルを別に作成して、定義とVBA記述の方法を知りたいです。
回答を見る
  • ベストアンサー

自動採番について

初心者です。 Access2000で銀行管理DBを作っています。 (1)テーブルを入金用と出金用それぞれに作成 (2)データ入力用フォームもそれぞれに作成します。 入力にあたって入力番号を自動採番にしたいと考えてますが、番号の構成は数値10桁で、"年" + "月" + "連番"の組み合わせにしたいのです。例:2003070001 入金用と出金用それぞれ別に入力番号をつけます。 これを実現するために「採番テーブル」を別に作成しなければいけないようですが、 (1)採番テーブルの定義の方法 (2)入力フォームで自動採番するためのVBA記述の方法 についてアドバイスいただけないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 私なら、テーブルに[年]、[月]、[連番](全て長整数型)のフィールドをそれぞれ用意します。 あと、主キーフィールドは別に用意し、これは年月関係なくそのテーブル全体で連番にします。(手っ取り早くオートナンバーでいいと思います。) 入力番号は、別にフィールドを用意してもいいし、フォーム上で表示のみでもいいと思います。 表示のみの場合は、フォームに非連結のテキストボックス(入力番号)を用意して、適当なイベントに、 Me!入力番号.Value = Format(Me!年, "0000") & Format(Me!月, "00") & Format(Me!連番, "0000") のように記述すればいいでしょう。 入力番号フィールドを用意する場合も、同様(上記の非連結が連結になるだけ)です。 年と月は手入力として、連番を自動入力する場合は、適当なイベントに、 If DCount("連番", "入金用", "年 = " & CLng(Me!年.Value) & " AND 月 = " & CLng(Me!月.Value)) = 0 Then   Me!連番.Value = 1 Else   Me!連番.Value = DMax("連番", "入金用", "年 = " & CLng(Me!年.Value) & " AND 月 = " & CLng(Me!月.Value)) End If と記述します。 あとは、年・月の未入力時の対応などのエラートラップを追加して下さい。

jetstream
質問者

お礼

早々とご指導いただきありがとうございました。 また質問ありましたらお願い致します。

関連するQ&A

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

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

  • 自動採番

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

  • MS Access 入力フォーム:自動採番

    Access2013での自動採番に関して2パターン教えて下さい。 質問(1):"顧客番号"の自動採番 【テーブル名】 顧客情報 【フィールド】 "顧客番号"、"顧客名"、"顧客名かな"、"顧客住所"、"電話番号"、"担当者"、"メール"・・・ <"顧客番号"の採番方法> 顧客名の頭文字を五十音順の「あかさたな」で行ごとに連番をつけて管理している。 例)) 「ABC商事」→エービーシーしょうじ→「あ‐01」 「東京印刷」→とうきょういんさつ→「た-01」 《やりたい事!》 入力フォームに新規で、「東西工業」を入力する際に "顧客名かな"を入力したら、"顧客番号"が自動的に採番されるようにしたい。 顧客名:東西工業 顧客名かな:とうざいこうぎょう 顧客番号:た-02 ←ココを自動採番にしたい ------------------------------------------------ 質問(2)"取引番号"の自動採番 【テーブル名】 取引情報 【フィールド】 "顧客番号"、"取引番号"、"顧客名"、"顧客名かな"、"住所"、"電話番号"、"担当者"、"メール"・・・ <"取引番号"の採番方法> 取引が発生した順で、"顧客番号"ごとに枝番をつけて管理している。 例)) 「ABC商事」→1/10の取引→"顧客番号":あ‐01、"取引番号":01 「ABC商事」→1/31の取引→"顧客番号":あ‐01、"取引番号":02 《やりたい事!》 入力フォームに新規で、「ABC商事」の2/15の取引情報を入力する際に "顧客番号"を入力したら、"取引番号"が自動的に採番されるようにしたい。 顧客名:ABC商事 顧客番号:あ‐01 取引日:2016/02/15 取引番号:03 ←ココを自動採番にしたい 説明がうまくできず、分かりにくいかとは思いますが 何とかお知恵をお借り出来れば助かります。 よろしくお願い致しますm(__)m

  • access 請求番号の自動採番

    まったくわかりません! よろしくお願いします。 仕様環境 WinXP  access2002 顧客管理のシステムを作っています。 テーブル 顧客テーブル(主キーは顧客番号 テキスト型) 請求テーブル(主キーは請求番号 テキスト型) 明細テーブル(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。) そしてリレーションシップで顧客テーブル(1)→(多)請求テーブル(1)→(多)明細テーブルになっています。 顧客情報を入力するフォームを作りました。 主キーは顧客番号(テキスト型,入力モードON,インデックス いいえ)で 他のテキストボックス(例えば名前)に何かしら文字を入力すると自動で顧客番号を採番してくれます。 例:0001 0002 0003~ そしてそのフォームから請求書作成フォームに飛ぶように 「請求書作成ボタン」を作り、顧客情報も一緒にひっぱっていってくれる 請求書作成フォームを作りました。(入力したばかりの情報も最新の情報で更新してくれます。) ・・請求書作成フォームはサブフォームを使い3つのテーブルからなっています。・・ 親フォーム:顧客テーブルから。 子フォーム:請求テーブルから。 孫フォーム:明細テーブルから。 主キーは請求番号で(テキスト型,入力モードON,インデックス はい(重複なし)) 他のテキストボックス(例えば請求日)に何かしら入力すると自動で請求番号を採番してくれます。 例:A0001 そこで問題なのですが、顧客情報は入力する度、次々自動で採番してくれるんですが、 請求番号は一番最初のレコードの”A0001”だけ採番してくれて、 新しいレコードで請求書を作ろうとテキストボックスに文字を入力すると「型が一致しません」というエラーが出ます。 ○ エラー内容 アクションエラーの実行 条件 true アクション名 値の代入 引数 [請求番号],Format(DMax("請求番号","請求マスタ")+1,"A0001") マクロは・・(参考書を参考にしています、マクロ名:自動採番マクロ) ------------------------------------------------- 条件 : DCount("請求番号","請求テーブル")=0 アクション : 値の代入 アイテム  : [請求番号] 式     :"A0001" ------------------------------------------------- 条件    : ... アクション : マクロの中止 ------------------------------------------------- アクション : 値の代入 アイテム  : [請求番号] 式     : Format(DMax("請求番号","請求テーブル")+1,"A0001") ------------------------------------------------- となっています。 念のため、主キーの入力モードを切り替えたり、式の"A0001"を単純に"1"にしたりしましたが、 請求番号はエラーが発生します。 原因がまったくわかりません。 よろしくお願いします!

  • Access 文字+年ごとの自動採番

    Accessは全くの初心者です。 プログラマーさんのサイトや質問サイトを参考に、初めてデータベースを作っているのですが、 どうしても文字+年ごとの自動採番がうまくいきません。 挿入前処理で「営250001」のように漢字1文字+和暦2桁+4桁連番にして、 年が変わるごとに4桁連番を0001に戻したいのです。 今入力してあるコードは以下の通りです。 ----------------------------------------------------------------------------- Private Sub Form_BeforeInsert(Cancel As Integer)  Dim vDt As Variant  vDt = DMax("番号", "営テーブル", "番号 Like '" & Format(Date, "ee") & "*'")  If (IsNull(vDt)) Then   番号 = "営" & Format(Date, "ee") & "0001"  Else   番号 = "営" & Left(vDt, 2) & Format(Val(Right(vDt, 4)) + 1, "0000")  End If End Sub ----------------------------------------------------------------------------- この状態では、0001のまま採番が進まず、行き詰ってしまいました。 他の質問者さんが(Date,"ee")を(Now,"nn")に置き換えて、分ごとの採番を試していたのを参考に、 「"営"&」を取って、採番が進むところまでは確認できました。 使っているのはAccess2003です。 どうか、よろしくお願いします。

  • Microsoft Accessで自動採番をさせたい。

    いつも大変お世話になっております。 アクセスでの質問です。 フィールドに「管理ID」があって、ここに8ケタのコードが自動採番されるようなしくみにしたいと考えています。 この管理IDは8ケタで、採番の仕組みは以下の通りです。 (1)「アイテム分類」というフィールドに入った製品によって頭2桁が決まる。 例)野菜・・・YA   果物・・・KU   鮮魚・・・SE (2)入力しているのが06年07月だったら次の4桁は「0607」になる。 ここまでで、頭の6ケタ「YA0607」などまでが決まる。 最後の2桁は、その月に発生している情報の連番をつけていきたい。 例) 06年07月に1番目に採番されたデータ→YA060701 06年07月に5番目に採番されたデータ→YA060705 という具合に・・・ これにはたくさんの要素がつまっています。 要素(1) 採番するフィールド以外のフィールド(アイテム分類)を見て、頭2文字を決めること。(ただし、規則はありますので、DBで表すことはできます) 要素(2) 現在のDATEから、年と月だけ4桁拾うこと 要素(3) 過去に発生しているレコードを抽出・カウントし、最後の数字の+1になる番号をつける ということです。 上記のようなことが可能なのでしょうか? 分かりましたら、できるだけ具体的に教えてください。よろしくお願いします。m(_ _)m

  • アクセス 項目ごとに自動採番

    講座名ごとに受付番号を自動採番したいのですが、出来るのでしょうか? テーブル名 セミナー受付(講座名、受付番号・・・) 講座名     受付番号 セミナーA   1001、1002、1003のように連番 セミナーB   2001、2002、2003のように連番 他のサイトを見ても解決できなかったので、ご指導をお願いします。

  • MySQL + PHP での自動採番

    PHP + MySQL で自動採番 複数テーブルから文字列を抽出して番号を振りたいと思っております。 具体的には以下のような形を考えているのですが、どのように記述をしてよいのか教えていただけますでしょうか? table1: +-------------+------+------+-- | ID | col1 | col2 | +-------------+------+------+-- | KW0807-0001 | A | 3323 | | KX0807-0002 | B | 1122 | | KY0807-0003 | C | 4441 | | KW0807-0004 | A | 1256 | +-------------+------+------+-- table2: +-----+------+------+-- | ID | col3 | col4 | +-----+------+------+-- | 1 | A | W | | 2 | B | X | | 3 | C | Y | | 4 | D | Z | +-----+------+------+-- table1 の「ID」 -> [K(規定値)] + [col1で入力した値よりcol4を抽出] + 入力した年 (08) + 入力した月 (07) + 0000から始まる4桁の連番 と、したく思います。 ご回答にあたって足りない情報があればご指摘下さい。 よろしくお願い致します。

    • 締切済み
    • PHP
  • 文字を含むIDの自動採番

    Access2013を使っています。 IDはテキスト型で、 A00000000 っていう書式なんですが、 新規レコード作成時のイベントで、ID自動採番(連番をふる)をしたいのですが、下記だと最初の1レコード(A00000001)以降がエラーになってしまいます。 Format(Nz(DMax("ID", "T_テーブル名"), 0) + 1, "\A00000000" ) もちろん、すでにあるIDがA00000001なので、DMaxが使えないんですが、どうやって分けてやったら良いのかわかりません。 やりたい結果は、新規レコード作成時に、IDが"A"&"8ケタの最大値+1"が自動に振られて、テーブルのIDフィールドにA00000001、A00000002・・・とデータ保持したいのです。 説明が判り辛くて恐縮ですが、ご教示お願いします。

  • ACCESS+SQL Serverで主キーを自動採番する

    ACCESS+SQL Serverで主キーを自動採番する ACCESSを独学で勉強を開始しているものです。 顧客管理のようなものを作りたいと思っているのですが、 オートナンバーではない主キー(顧客コード)を設定しているテーブルがあります。 顧客コードの構成はアルファベット1文字+数字8桁です。 そのうち、数字は西暦2桁+月2桁+日2桁+下2桁は連番です。 ACCESS2007プロジェクトで、SQL Server 2005 Express Editionへ接続しテーブルは作ってあり、既に顧客データが10件ほど入っています。 新規に顧客データを追加する際に、必要事項を入力し、登録ボタンを押した段階で顧客コードを自動生成し、重複チェックし、採番したいと考えています。 アルファベットは必要事項入力時に入力済み、日付もその日の日付を6桁設定し、とりあえず「01」と下2桁を採番して、現在のデータに同じものがないかチェックします。 そして、同じものがあれば「01」+1を繰り返しながらチェックしていくというようなコードはどのようにすればいいでしょうか? わかりづらいとは思いますが、よろしくお願いします。