• ベストアンサー

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