• ベストアンサー

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

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

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

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

  • ベストアンサー
回答No.2

自分の書きこみへの追加なのですが、最大値+1だとテーブルが大きくなった時に余計な処理で時間がかかります。 これが嫌な場合は、採番テーブルというのをつくって、ここに管理番号の最新値を記録しておき、伝票を新たに作る時は採番テーブルから番号を取得し、採番テーブルの管理番号を+1した値に更新する、という方法もあります。

bst
質問者

お礼

採番テーブルを作りました。なんとか、うまくいきそうです。 どうもありがとうございました! お礼が遅くなってしまって申し訳ありませんでした。

その他の回答 (1)

回答No.1

管理番号フィールドをオートナンバー型にするのが定石だと思います。 そうではなく「伝票新規」のボタンを押してから、番号が表示されるようにする必要があるのでしょうか?その場合はクエリーを使って既存の管理番号の最大値を求めて、これに1加えた値をテキストボックスに表示させたらどうでしょうか。

bst
質問者

お礼

早速の回答ありがとうございます! オートナンバーですが、うまく使えなかったんです。 説明不足でした。作っているものは下記のようなものです。 一度新規でフォームに内容を入力し、登録してから 管理番号で内容を呼び出して、一部修正を加えたりしながら 見積書・納品書・請求書を作っていくようにしているんです。 こういうことをしているからなのかはわからないんですが、 うまくいかなかったんです。 だから、他の方法ってあるのかなぁと思って質問させていただいたんです。 そうですね、最大値+1とすれば、自動的に番号が付けられますよね! ありがとうございます。

関連するQ&A

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

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

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

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

  • Access2003 伝票番号を自動的につけるには

    お世話になっております。 受注テーブルに[伝票番号]があって、番号を自動的につけたいと思っています。 入力用の[受注伝票]フォームがあります。 3月17日最初の入力 2006031701 3月17日の3番目の入力(最初、2番目は入力済み) 2006031703 このように日付+自動的に2桁の番号をつけたいのですが方法がわかりません。 参考になるページがあってこのように書いてみましたがエラーになりました。 [受注伝票]フォームの[伝票番号]テキストボックスプロパティの規定値 =IIf(DMax("伝票番号","受注伝票","伝票番号 Is Not Null") Is Null,CLng(Format$(Now(),"yyyymmdd"))*100+1,IIf(Left(CStr(DMax("伝票番号","受注伝票","伝票番号 Is Not Null")),8)=Format$(Now(),"yyyymmdd"),DMax("伝票番号","受注伝票","伝票番号 Is Not Null")+1,CLng(Format$(Now(),"yyyymmdd"))*100+1)) ご教授いただけると幸いです。よろしくお願いいたします。

  • Accessのフォーム上にレコード数とレコード番号の表示

    Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。 フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。 以上よろしくお願いします。

  • Access VBA 他アプリケーション

    Accessのフォームから他アプリケーションを起動するボタンをつくります。 起動したアプリケーションの入力フォームへ、Accessのフォームのテキストボックスの内容を書き込む事はできないでしょうか? 例えば、Accessのフォームに『OKWave』と入力されたテキストボックスと、ブラウザが開くボタンが配置されているとします。ボタンをクリックするとブラウザが起動し、起動したら任意の検索サイトが表示され、そのサイトのフォームに、Accessのフォームのテキストボックスにかかれている、『OKWave』が自動的に入力するようなVBAを書きたいと思います。 よろしくお願いします。

  • access2003

    2000種ほどの商品を扱っています。商品コードひとつにつき、仕入先・取引先が1箇所ずつ決まっていて、値段の変化もあまりありません。伝票を見ながら、フォームから直接売上入力を行い、請求処理と売上分析に利用したく思います。 ◆親)売上入力フォーム:売上管理番号/日付/取引先/取引先伝票番号/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付/取引先伝票番号 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 入力の効率化を図るため、1部品1取引先であることを利用して、親フォームで取引先を選択することで商品を絞り込み、子フォームの商品選択コンボボックスにはその取引先の商品だけが表示させるようにしたいと思います。どのような方法が考えれるでしょうか? クエリを使うのだと思いますが、いろいろ試しても失敗してしまいます。 また、その上でさらなる絞込みとして、明細の各行で各商品を選択する際に、商品コードの一部を入れたり、仕入先名を入れると部品が絞り込めるようにできないでしょうか? アドバイス、参考資料、なんでもお寄せください! どうぞよろしくお願いいたします。

  • アクセスの(売上伝票)フォームについて

    アクセスの初心者です。下記の仕掛けの作り方の操作を教えてください。 (1)担当者テーブルがあります。     担当者コード 担当者名     001      山田     002      川本     003      吉田 (以下略)  売上伝票フォームで、売上入力するとき、担当者テキストボックスに担当者コードを「002」と入力すると、担当者名前のテキストボックスに、「川本」と自動的に表示し、(次の商品名のテキストボックスにフォーカスを移し)たい。  本を見ても載っておらず、講師に聞いても答えがなく教えて下さい。、実例を見ていますから出来ることは、間違いないと思います。

  • accessのsubフォームで小計欄を作成したい

    アクセス初心者です。 売上伝票を作成し、請求書へデータを流し、売掛管理を 行うDBを作成しています。 フォーム 売上伝票には売上伝票subフォームを組み込んでいますが 売上伝票subフォームの中で小計欄を作成したいのです。 売上合計欄は、売上伝票フォームに作成します。 売上伝票subフォームにデザインビューにしてテキストボックスで作成しても、 フォームビューにすると出てきません・・・。 表示させる方法はあるでしょうか? また、売上は非課税対象のものもあるため、一括で 売上合計に消費税を掛けるわけにもいきません・・。 質問がわかりづらくてすみません。。 困っています、どうかよろしくお願い致します。

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

  • access2003 複数のフォームから入力したデータに通し番号を付けてストックしたい

    初心者の恥ずかしい質問かもしれないので申し訳ありませんが、自力で解決できないのでアドバイスをお願いします。 伝票入力画面を作っています。  ◆親)売上入力フォーム:売上管理番号/日付/取引先/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 伝票が数種類あるため、それぞれの伝票を画像として取り込んで複数の入力画面を作り、入力しやすくしようと思っています。 このとき、各フォームから入力したデータを、オートナンバーでひとつの売上入力/明細テーブルにストックしていくにはどうしたらよいでしょうか? よろしくお願いします。

専門家に質問してみよう