• ベストアンサー

Access2003での入力済のフィールドに対しての連番について。

Access2003での連番について。 T_商品 ID:オート CODE:数値型6桁 その他何項目かのフィールドがありCODEの部分に000001~003000くらいまで入力がされています。 003001番から自動で+1していくにはフォームでどのように指定したらいいでしょうか?? 既に003000まで入力されているので最大値を求めてやってみたりしているのですが 中々うまくいきません。 よろしくお願いいたします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

すでに入力されているものに続けて連番を振っていくということでいいいのですね >CODE:数値型6桁 >その他何項目かのフィールドがありCODEの部分に000001~003000くらいまで入力がされ>ています。 前に0が付いていますが数値型で間違いないですね? (前0は書式でつけているだけですね) いろんな方法がありますが 規定値に次の番号を自動的に表示するようにしましょうか フォームの開くとき、レコード挿入時、削除後確認に下のようなコードを書きます Private Sub Form_AfterDelConfirm(Status As Integer) Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 End Sub Private Sub Form_AfterInsert() Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 End Sub Private Sub Form_Open(Cancel As Integer) Me.CODE.DefaultValue = DMax("CODE", "テーブル名")+ 1 End Sub

edajima2
質問者

補足

早速のご回答ありがとうございます。 Private Sub Form_AfterDelConfirm(Status As Integer) Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 End Sub ↑削除後確認 Private Sub Form_AfterInsert() Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 End Sub ↑挿入後処理 Private Sub Form_Open(Cancel As Integer) Me.CODE.DefaultValue = DMax("CODE", "テーブル名")+ 1 End Sub ↑開く時 上記三点をフォームのプロパティに入力しましたが、 コンパイルエラー メソッドまたはデータメンバが見つかりません とでてしまいました。 設定の仕方を間違えたのでしょうか??

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

テキストボックスの「規定値」プロパティを以下のようにします。 =DCount("ID","T_商品") + 1 =DMax("CODE","T_商品") + 1 上は既存の数+1、下は最大値+1です。 他の方の回答のように、イベントで仕込んでも良いのでしょう。 失敗する原因は"テーブル名"を文字通り記述したからではないですか? 回答は"テーブル名"(の所は実際のテーブルの名前を書いてください)と言っているのです。 だから、"T_商品"にしないとエラーになってしまいます。

edajima2
質問者

お礼

色々とご迷惑をお掛けいたしました。 上記ににも記載させていただきましたが、 テキストボックスの名前を変更したらうまくいきました!! 貴重なご意見ありがとうございました。

edajima2
質問者

補足

ご回答ありがとうございます。 テーブル名はT_商品でやってまして、教えていただいたとおり やってはいるのですが・・・。 規定値のプロパティはIDとCODEの二ヵ所に入力するするということ でしょうか??

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>この行が黄色くなっています。 フォームのプロパティーのイベントタブから開く時を選び そこに Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 を書き込んでみてください

edajima2
質問者

お礼

色々とご迷惑をお掛けいたしました。 テキストボックスの名前を変更したらうまくいきました!! 本当に助かりました!!

edajima2
質問者

補足

ご回答ありがとうございます。 Me.CODE.DefaultValue = DMax("CODE", "テーブル名") + 1 初めに教えていただいた時に入力済となっております。 何度もすみません・・・。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

どの行が黄色くなってます? 参照設定に参照不可のものはありませんか?

edajima2
質問者

補足

度々すみません。 Private Sub Form_Open(Cancel As Integer) この行が黄色くなっています。

関連するQ&A

  • Access2002 フォーム上にないフィールドに入力するには

    フォーム上にあるボタンを押すと、あるフィールドに数値を入力する VBAを作りましたが、フィールドには入力されませんでした。 色々やってみたらフォーム上にフィールドが無いと入力されないようでした。 これはAccess2002の仕様なのでしょうか。 それともそのための表記があるのでしょうか。 例) 顧客ID = 1 単純にこれだけのことがしたいのですがうまくいきません。 よろしくお願いします。

  • (ACCESS)連番取得について

    アクセスで顧客管理をしています。 DMax関数を用いて、レコードを追加する度に自動で連番を振る設定に したいと思っていますが、上手くいかないため質問させてください。 【テーブル名】T_顧客一覧 【入力用のフォーム名】F_顧客登録 【連番を入力させたい項目(フィールド名)】No(テーブルでは主キーに設定) とし、フォームの”No”の既定値に   =DMax("No","T_顧客一覧")+1 と入力するのですが、フォームには1としか表示されません。 非常に初歩的な質問だとは思うのですが、 何か原因として考えられることがありますでしょうか? 情報が足りないようでしたら補足させていただきます。 よろしくお願いします。

  • Access VBAで自動連番を振るには

    【テーブル名】T_株券管理 【フォーム名】F_株主入力 【フィールド名】株主ID(テキスト型)(主キー) フォームに入力する際にオートナンバーを使用せずに、 レコードが切り替わると「株主ID」が「00001」「00002」「00003」・・・・というように1づつ発番されるようにしたく、AccessVBAの本を読んだり、ネットでDmax等調べているのですが、必要な情報が探せずに困っています。 本当はオートナンバーでIDを振っても良いのですが、レコードの削除等行った時に歯抜けになってしまうので、うる覚えで申し訳ないのですが・・・確か、フォームのテキストボックスのプロパティ、コードビルダでVBを「レコードが移動した際に」→「株主IDが0の場合に”00001”を、0でない場合には既存の数値に+1した数値をテーブルT_株券管理の”株主ID”に入力する。」といった感じの記述がしてあったと思います。VB初心者なので、説明が上手くできずにすみません。 このような記述方法はありますでしょうか?

  • access フィールドの数値を使って計算したい

    あるテーブル内に様々な数値をフィールドに入力して、それらの数値をフォームでルックアップを使用して計算したいのですが、accessはどうやら主キー(id)の数値(1、2、3…)を使って計算してしまいます。どのように設定すればよいのでしょうか。 テーブル1 id  フィールド1 1    5 2    10 3    15 4    20 フィールド1の数値をフォームにてルックアップで選んで計算したい(クエリ内の計算式に組み込みたい)。 よろしくお願いいたします。 access2010使用

  • アクセスで複数フィールドを結合して1フィールドを作る際

    こんにちは。 OSはWIN2KでAccess2000を使用しております。 「T_データ」テーブルには、 社員コード(数値型)、社員名(テキスト型)、 給料(数値型)、住所(テキスト型)フィールドがあります。 この4つのフィールドを以下の条件を満たしつつ 「T_結合」テーブルの「結合データ」フィールドという 一つのフィールド(テキスト型)に追加したいのです。 ------------------------------------------------ 1.社員コードは 5桁、社員名は半角30桁、 給料は10桁、住所は全角20桁。 2.社員コード、給料は右詰とし残りは0で、 社員名、住所は左詰とし、残りは空白("")で埋める。 ------------------------------------------------- 最終的に「T_結合」テーブルを1レコード85バイトの レコードとしてエクスポートするのが目標です。 アクセスはUnicodeで管理されているというので単純には いかなそうなので、どなたかご教授願います。

  • Accessでの連番設定に関して

    Accessでの連番設定に関して教えて下さい。 Access2010で注文DBを作成しています。 注文フォームにはサブフォームが設けてあり、サブフォームに注文明細を入れています。 サブフォームには明細IDのフィールドが作成してあります。 注文フォームを開けた時に常にサブフォームの明細IDが1から始まるようにしたいと考えているのですが、方法をお教えいただければと思います。 よろしくお願いします。

  • Access2007で自動連番できなくなった?

    Access2003からAccess2007へバージョンアップしました。 2003では、テーブルを開いて、数値型のフィールドに、 1 2 と入力してから、下矢印キーを押しっぱなしにすると、 連番をダーッと入力できたのですが、 2007にアップしてから出来なくなりました。 この機能を使うには何か設定を変える必要があるのでしょうか? それとも、この機能自体がなくなってしまったのでしょうか? ご教授お願いします。

  • Access VBAで自動連番を振るには

    Access2000で株主管理DBを作成中です。 【テーブル名】T_株券管理 【フォーム名】F_株主入力 【フィールド名】株主ID(テキスト型)(主キー) フォームに入力する際にオートナンバーを使用せずに、 レコードが切り替わると「株主ID」が「00001」「00002」「00003」・・・・というように1づつ発番されるようにしたく、AccessVBAの本を読んだり、ネットでDmax等調べているのですが、必要な情報が探せずに困っています。お手数ですが教えて頂けますでしょうか。よろしくお願い致します。

  • ACCESSのフィールド

    ACCESSのフィールドで16桁あります フォーム画面で 5桁づつ 表示させる方法はありますか

  • MS-Accessで連番を回避したい。

    MS-Access でテーブルを開いて、 あるフィールドに数字を入力すると カーソルが次のレコードに移動すると、 勝手に連番を入力したがる機能を 停止したいが、わからないので ぜひ教えてください。 Access97ではこの現象はありません。 Acces2000と2002(Xp)では余計なおせっかいが発生します。 具体的には、 テーブルを1個作成して、 文字または数値の項目を1個作成します。 次にテーブルを開き、 今、作成した項目に1を入力してEnter つぎに、下矢印をおして2を入力してEnter 問題はその次です。 下矢印をおして新規レコードに移動したときに、 自動的に3を表示してしまいます。 本当は、3ではなくて空っぽにしたい時でも 勝手に3を表示します。 意識していなければ、それが書き込まれてしまいます。 数値フィールドの場合は、初期値をゼロに指定しておくと この現象を回避できますが、 文字フィールドの場合はだめです。 どなたか回避方法ご存じでしたらよろしくお願いいたします。