• ベストアンサー

アクセスで新規にレコードを追加する際自動的に番号をつけたい!

お客さんの名前をアクセスで管理しています。 新しいお客さんを入力するフォームを作ったのですが、 そのフォームを開いたとき、お客さんの番号が自動的に入力 されている状態にしたいのですが、可能でしょうか? 現状では、番号はテキスト型で保存しているんです。 よろしくお願いします。

  • bst
  • お礼率85% (75/88)

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

  • ベストアンサー
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.2

オートナンバー型が駄目ならカウンタテーブルを作りましょう。 テーブル構成 キー   テキスト型 サイズ1 カウンタ 整数型   長整数型 で良いでしょう。 それに値 キー カウンタ Y   0 を初期値にしておきます。 ユーザ様登録画面を開いた時に同テーブルのキーYのカウンタを読み取り(SELECT)し結果をワークへ入れます更にカウンタを更新します(UPDATE)このワークの値を編集してお客様番号にしましょう。ここはVBAで作成する必要があります。 なお、複数ユーザ同DBを使用するならばロックテーブルを作成して、同時にカウンタテーブルの読み取りをしない様にしましょう。 VBAはご自分でヘルプを参照しならががんばってください。 INSERTやUPDATEなら簡単な方法なら DoCmd.RunSQL SqlCmd で出来ますよ。 SELECTなら例えば Set rst = dbs.OpenRecordset(SqlCmd, dbOpenDynaset) rst.MoveFast カウンタ = rst.カウンタ とかすれば良いかな 詳しくはヘルプやVBAの本などを参考にされると良いでしょう。

bst
質問者

お礼

詳しくて具体的な回答アリガトウございました!! VBAの本なども読みながらがんばりました。すごく参考にさせて 頂いたのに、お礼を忘れていました。 本当に申し訳ありません。

その他の回答 (1)

  • ryohei
  • ベストアンサー率16% (1/6)
回答No.1

お客さん番号を「オートナンバー形式」にすると、自動で採番されます。 試してみてください。 ただし、他の項目(名前など)を入力しないと、番号は表示されません。 フォームを開いたときに表示するようにするのであれば VBA(モジュール)を作成して、カウンター用のテーブルを作った方が いいのかも知れません。

bst
質問者

補足

回答ありがとうございます!オートナンバー形式にしたところ、自動的に番号が振られました。ただ、検索画面を作ったのですが、検索にあたっては、お客さん番号がオートナンバー形式だとうまく動かないんです・・・。そこで、カウンタ用テーブルを作ろうと思うのですが、どのように作ったらよいのでしょうか?大変申し訳ないのですが、教えていただけないでしょうか?あつかましいお願いをしてすみません。よろしくお願いします。

関連するQ&A

  • アクセスで新規にレコードを追加する際自動的に番号を付けたい。

    アクセス2000で売上の管理をしています。 「管理番号」を使って伝票の処理をしているのですが、 フォームに新規に伝票を入力するとき、自動的に番号を付けたいんです。 できたら、フォーム上に「伝票新規」のボタンを作って、そのボタンを押したら テキストボックスに番号を表示させるようにしたいのですが、 どうしたらよいのかわからないんです! どなたか教えていただけませんか? よろしくお願いします。

  • Access 複数条件から自動入力

    Access素人です。 車の管理で車番から管理番号を自動入力したいです。 tb所有者(データ入力済) 管理番号 名前 電話番号 車番1 車番2 車番3 車番4 tb使用(都度入力) 管理番号 車番1 車番2 車番3 車番4 があり tb使用入力フォームより 車番1(テキスト1) 車番2(テキスト2) 車番3(テキスト3) 車番4 (テキスト4) を入力するとtb所有者のデータから管理番号(テキスト5)が自動に入力できるようにしたいです。 また管理番号の該当がなければないまま車番だけテーブルに入力してきたいです よろしくお願いします。

  • Accessで自動に番号を振る方法

    AccessのマクロやVBAにお詳しい方、教えてください。 現在、Access2010を使っています。 たとえば、テーブル1が、 種別  番号 りんご  1 みかん  1 りんご  2 メロン  1 みかん  2 メロン  2 メロン  3 とあります。 フォーム1には、種別と番号のテキストボックスがあります。 新規データ入力で、「種別」テキストボックスに「みかん」と入力し、「番号」テキストボックスをダブルクリックしたとき、「みかん」の番号の最大値の次の番号「3」が自動的に振られるようにしたいのですが、どうしたらいいでしょうか。 なお、 1.「種別」テキストボックスが空欄の場合 または、 2.「番号」テキストボックスに既に数値が入っている場合 は、ダブルクリックしても番号が振られないようにもしたいです。

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

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

  • ACCESS新規レコードが追加出来なくなりました

    ACCESS2010初心者です。クエリから入力用のフォームを作りましたが、新規レコードの保存が出来なくなりました。※マーク有効、データ入力も可能、エラーメッセージなしですが、フォームを閉じて、開きなおすと新規レコードが消えている(保存されていない)といった状況です。フォームの元クエリも新規レコード保存なしですが、クエリの元デーブルのみ新規データがどんどん追加されています。原因と対策をご教授頂きたく宜しくお願い致します。

  • 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"にしたりしましたが、 請求番号はエラーが発生します。 原因がまったくわかりません。 よろしくお願いします!

  • ACCESS2010 フォーム最新画面とレコード

    ACCESS初心者です。 電話相談の管理を作っています。 フォームの画面で、ボタンを作り、押すと最新入力フォームが出るようにしたのですが、 何も入力しなくても、閉じるたびに、管理番号(連番)が更新されます。 値数値を「はい」にすると、更新せず閉じられるのですが、 こんどは、前番号のフォームに移動が出来なくなります。 「○○フィールドに値を入れてください」となり、保存できませんで閉じると、 連番は更新されませんが、それ以前の入力したフォームに戻れません。 上記の両方を満たす設定は、出来るのでしょうか? 参考:Windouws7  Access2010

  • Access2007 「レコードを追加できません」

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • Accessフォームに行番号を自動的に付与するには

    帳票フォームにデータを入力際、先頭行の行番号項目に必ず1、以下 2、3・・と自動的に番号をふりたいのですがどうすれば良いでしょうか? よろしくお願いします。 (Access2000を使用しています)

  • Accessで郵便番号入力で住所を表示させたいのですが

    いつもお世話になっています。 Accessで取引先の管理をしたいと思っています。取引先の情報をフォーム上で入力するとき、郵便番号を入力すると自動的に住所が入力される・・・というのをつくりたいのですが、どうしたらいいのでしょうか? 郵便番号+住所をテーブルに置くのは、そうとうな容量になってしまいますよね。みなさんはどのように作っていますか?教えてください。 Acess97を使います。ユーザーはフォーム上で簡単入力を望んでいます。 よろしくお願いします。

専門家に質問してみよう