• ベストアンサー

ACCESS 2000での自動発番

Microsoft Access2000で固定の文字+数字(AAA00001など)のように自動発番をしたいのですが、どうにもいきずまってしまいお力をお貸しください。 現在の (テーブル)  品番テーブル   品番   名前   備考    (フォーム)  品番発番フォーム   品番   名前   発番ボタン  品番発番フォームより名前を入力し発番ボタンをクリックし固定の文字+数字(AAA00001など)の自動発番した品番を、品番テーブルの品番の中に入れてたい。 発番ルールは  文字(AAA)+5桁の数字です。 宜しくお願いします。

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

  • ベストアンサー
noname#240783
noname#240783
回答No.1

「発番ボタン」クリックイベントにVBAプロシージャを 割り当ててやる方法が手っ取り早いのではないでしょか?! まず、「品番発番フォーム」の「品番」と「名前」テキストボックスは 「品番テーブル」のそれぞれのフィールドに連結されていることが前提です。 「品番」テキストボックスは手入力しないので「編集ロック」がいいかも。 「発番ボタン」のプロパティで「イベント」-「クリック時」に 「イベントプロシージャ」を割り当てます。 (「クリック時」の欄の右端にある「点が3つある」ボタンをクリックし、 「コードビルダ」を選択して「OK」でVBエディタ画面に切り替わります) そこに、例えば下記のようにコードを入力します。 Private Sub 発番ボタン_Click() Dim sMax As String Dim iMax As Integer '「品番」フィールドの最大値を検出 '(AAA00001のような文字列でも最大値検出できました) sMax = DMax("品番", "品番テーブル") '下5桁の数字だけを抽出 iMax = Val(Right(sMax, 5)) '上で抽出した最大値をインクリして、品番形式の文字列を生成して '連結フィールドにセットします Form_品番発番フォーム.品番.Value = "AAA" & Format(iMax + 1, "00000") End Sub 概略以上のような方法を今思いつきました。他にもスッキリしたやり方が あるかもしれませんが、まずは「解決の取っ掛かり」にでもなれば幸いです。

-TOM-TOM-
質問者

補足

回答有り難う御座います。 やってみましたが、 「実行エラー”94” NULLの使い方が不正です。」 というエラーメッセージが出てしまい、 デバックボタンを押すと sMax = DMax("品番", "品番テーブル") が黄色になっています。 どこかおかしいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#240783
noname#240783
回答No.2

「実行エラー"94" NULLの使い方が不正です。」って、言うじゃぁなぁい... 「品番テーブル」にデータがっ、ありませんからぁっ、残念っ! 拙者、気づきませんでした、漸りぃぃっ! (って、こんな事書いていいのかなぁ...) すみません、全くデータの無い新規のテーブルの場合は想定していませんでした。 というか、それはスタート時1回だけのことなので、 対処する必要ないかと思っていました。 私がテストしたときは、「品番テーブル」に1件正規のデータを 手入力で入れて準備してから始めました。 今、空のテーブルからやってみたら、同じエラーで止まりましたので 1件スタートデータとして用意してからやってみて下さい。 この時間だと「そんな事、もうやったよっ!」と言われそうですけど...あはっ このエラーに対処するには、エラートラップするか、運用で逃げるか、 あと、いい方法があったら皆さん、おじえでぐだざい... って、私が質問して、どーする!?...すみません。

-TOM-TOM-
質問者

お礼

有り難う御座いました。 運用で逃げることにしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • Access2003にて・・・

     こんにちは。Accessにて、詰まってしまいまして、お知恵をお借りできればと思っています。よろしくお願いします。 Access2003 にて テーブルAには、 品番、品名、単価の3つのフィールドがあります。 このテーブルをもとにして、フォームAを単票形式で作成しました。 このフォームを、品番を登録したりするためではなく、品名や単価の確認用として使用したいと考えています。そこで、「品番」コントロールに品番を入力すると、あとの2つのコントロールに自動でデータが表示されるようにできればいいな、と思いました。  「品番」コントロールはコンボボックスに変更し、テーブルAの品番から値を取得するよう設定し、ここを入力したあと更新後処理であとの2つのコントロールに値を表示するような設定をするのかな、というところまで至って、はてここにどのような処理を書き込めばいいのかで詰まってしまいました。  このやり方がそもそも間違っているのかもしれません。テーブルをもとにするのではなく先にクエリを作っておくのがいいのかもしれませんが、自分なりにいろいろ試してみたのですが、なかなかうまくいかなくて…  何か方法はありますでしょうか?他にここへ組み込むサブフォームやら、別のフォームを表示させるボタン等考えているのですが、上記の方法ができるかできないかでフォームAのつくりを変えようと思っているので、とりあえずは必要と思われることだけ書きました。言っていただければどんどん補足させていただきますので、何か方法がございましたらご教授お願いいたします。 (ちなみに、私のAccessレベルは初心者でございます…)

  • 自動で入力した文字をテーブルに反映させたい

    画像のようなテーブルがあるとします。 このテーブルは基準値などを入れておくテーブルでテーブル1とします。 このテーブルを基にしたフォームがあり、そこで入力できるようになっています。 フォームで品番を入力したら色種類と詳細が自動でて、テーブルにも反映されるようにしたいです。 品名は教えて頂き品番を入力したら空白前の文字が返るように設定しています。 色々考えてるうちに何をどうしていいか訳が分からなくなってしまいました。。。 品名、色種類、詳細だけのテーブルをもう一つ作ってそれを参照にしたらいいのか?? 初心者ですので分かりやすくお願いします。 アクセスは2002を使っています。

  • 連続番号のデータ入力について。

    連続番号のデータ入力について。 環境: ACCESS2000     今回在庫管理のデータベースを作成しており、 商品の品番が1度に大量仕入してるため連続いたものになり データ入力が手間がかかるので、簡易に入力できるフォーム作成しております。 状況:フォーム(名称:在庫管理)    フォーム上にテキストボックス(名称:text品番頭)          テキストボックス(名称:text品番start)          テキストボックス(名称:text品番last)          テキストボックス(名称:text商品名)          テキストボックス(名称:text仕入先)          コマンドボタン(名称:command登録)    テーブル(名称:在庫マスター)    フィールド  品番    商品名   仕入先 今回やりたい事:    text品番頭にアルファベット3文字、    text品番startに数字4桁(登録したい番号の開始数字)、    text品番lastに数字4桁(登録したい番号の最後)、    text商品名に商品名、text仕入先に仕入先    を入力し、command登録でテーブルに入れる。    その際、品番はtext品番頭+text品番start~text品番lastでフィールド品番に連続登録、    商品名及び仕入先はtext商品名(text仕入先)に入力されたものを全ての品番に対応した    商品名及び仕入先フィールドに登録。   ex: text品番頭  AAA       text品番start  1111      text品番last  5555      text商品名  いちご      text仕入先  八百屋     と入力した場合、テーブルに     品番      商品名    仕入先    AAA1111     いちご    八百屋    AAA1112     いちご    八百屋    AAA1113     いちご    八百屋    AAA1114     いちご    八百屋      ・      ・      ・      ・      ・      ・    AAA5555     いちご    八百屋    つたない説明でわかりにくいとは思いますが、 ネット等で調べていても連続した数字入力は クエリばかりでてくるため、どのようにコードを組み上げて いいのかわかっておりません。 自分のできる範囲は、フォーム利用によるデータ入力は作成できる程度です。 何卒ご教授の程宜しくお願い致します。

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

    アクセスで社員番号を自動的に振る方法を教えてください。 アクセスは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 テーブルを繋げたり、文字を抜き出したりしたい

    Access2003です。 Aテーブル Bテーブル Cテーブル 名前    ランク   備考 あああ   AAA     ABC いいい   BBB     DEF ううう    CCC     GHI えええ   DDD     JKH ※フィールド数は、各テーブルに1つのみ とあります。 これをクエリで編集したいのですが、行いたいことが2点 1)1文字挿入して繋げる AテーブルとBテーブルを繋げるのですが、間に1文字挿入したいです。 「あああ~AAA」 と、「~」を挿入 2)1文字だけ抜き出す Cテーブルの真ん中の1文字だけ抜き出す 1レコード目だと、「B」だけ抽出 基本的な操作かもしれませんが、出来ません。

  • アクセスのフォームについて

    アクセス2000について質問です。他の方の作ったフォームを加工して作業しているのですが、文字があらかじめ入っていて、フォームを開くたびにその文字を訂正しなければいけません。これを解除する方法はないですか。また、2桁の数字を入力しようとすると、「文字列が長すぎます」とでて、1桁になってしまいます。どうすれば2桁を入力することが出来るでしょうか。初心者ですので、もしかしたら簡単なことかもしれませんが、よろしくご指導下さい。

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

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

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • アクセスの自動入力フォームに手動で入力したい

    初心者ですが、ネットで調べながらaccess2013で、納品書フォームを作りました。 納品書明細テーブルと商品マスタテーブル(商品コード、品番、単位)を納品書明細クエリで紐づけしてフォームを作成しました。商品コードを入力すると、自動的に品番と単位が入るようになっています。 ここで、商品コードがついていない商品(商品マスタに含まれず、今後登録する予定もない)も品番と単位の欄に手動で入力できるようにしたいのですが、可能でしょうか。 今手動で入力すると「フィールド'商品コード'とキーが一致しているレコードをテーブル'商品マスタ'で探すことができません」とエラーが出てしまいます。 ご教示いただけましたら幸いです。よろしくお願いいたします。

専門家に質問してみよう