- ベストアンサー
ACCESS 2000での自動発番
Microsoft Access2000で固定の文字+数字(AAA00001など)のように自動発番をしたいのですが、どうにもいきずまってしまいお力をお貸しください。 現在の (テーブル) 品番テーブル 品番 名前 備考 (フォーム) 品番発番フォーム 品番 名前 発番ボタン 品番発番フォームより名前を入力し発番ボタンをクリックし固定の文字+数字(AAA00001など)の自動発番した品番を、品番テーブルの品番の中に入れてたい。 発番ルールは 文字(AAA)+5桁の数字です。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「発番ボタン」クリックイベントに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 概略以上のような方法を今思いつきました。他にもスッキリしたやり方が あるかもしれませんが、まずは「解決の取っ掛かり」にでもなれば幸いです。
その他の回答 (1)
「実行エラー"94" NULLの使い方が不正です。」って、言うじゃぁなぁい... 「品番テーブル」にデータがっ、ありませんからぁっ、残念っ! 拙者、気づきませんでした、漸りぃぃっ! (って、こんな事書いていいのかなぁ...) すみません、全くデータの無い新規のテーブルの場合は想定していませんでした。 というか、それはスタート時1回だけのことなので、 対処する必要ないかと思っていました。 私がテストしたときは、「品番テーブル」に1件正規のデータを 手入力で入れて準備してから始めました。 今、空のテーブルからやってみたら、同じエラーで止まりましたので 1件スタートデータとして用意してからやってみて下さい。 この時間だと「そんな事、もうやったよっ!」と言われそうですけど...あはっ このエラーに対処するには、エラートラップするか、運用で逃げるか、 あと、いい方法があったら皆さん、おじえでぐだざい... って、私が質問して、どーする!?...すみません。
お礼
有り難う御座いました。 運用で逃げることにしました。
補足
回答有り難う御座います。 やってみましたが、 「実行エラー”94” NULLの使い方が不正です。」 というエラーメッセージが出てしまい、 デバックボタンを押すと sMax = DMax("品番", "品番テーブル") が黄色になっています。 どこかおかしいのでしょうか?