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

このQ&Aのポイント
  • ACCESS2000を使用して在庫管理のデータベースを作成しています。
  • 連続した品番のデータ入力を簡易に行うためのフォームを作成しています。
  • フォームにアルファベットと数字を入力し、登録ボタンを押すことでデータベースに連続したデータを登録できます。
回答を見る
  • ベストアンサー

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

連続番号のデータ入力について。 環境: 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     いちご    八百屋    つたない説明でわかりにくいとは思いますが、 ネット等で調べていても連続した数字入力は クエリばかりでてくるため、どのようにコードを組み上げて いいのかわかっておりません。 自分のできる範囲は、フォーム利用によるデータ入力は作成できる程度です。 何卒ご教授の程宜しくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

失礼、後始末を忘れていました。 Private Sub command登録_Click() Dim db As Database Dim rs As Recordset Dim i As Long Dim s As String Set db = CurrentDb Set rs = db.OpenRecordset("在庫マスター", dbOpenDynaset) For i = Me!text品番start To text品番last With rs rs.AddNew rs!品番 = Me!text品番頭 + CStr(i) rs!商品名 = Me!text商品名 rs!仕入先 = Me!text仕入先 rs.Update End With Next i rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub

taho1999
質問者

お礼

piroin654さん、ご教授頂き誠にありがとうございます。 まだ少し理解できていない部分もありますが、 調べながらいつでも「こういうやり方がある」と思い出せるよう 勉強したいと思います。 とりあえず教えて頂いたコードの動作は サンプルデータベースを作り試したところ 考えていた通りでした。 ACCESSは奥深くまだまだ勉強が足りないと痛感しました。 これからも引き続き勉強していきたいと思います。 ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

訂正です。 Dim s As String は使っていないのでコメントアウトするか、 消してください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

単純に連続番号の生成、と理解して、 参照設定でDAOにチェック。 Private Sub command登録_Click() Dim db As Database Dim rs As Recordset Dim i As Long Dim s As String Set db = CurrentDb Set rs = db.OpenRecordset("在庫マスター", dbOpenDynaset) For i = Me!text品番start To text品番last With rs rs.AddNew rs!品番 = Me!text品番頭 + CStr(i) rs!商品名 = Me!text商品名 rs!仕入先 = Me!text仕入先 rs.Update End With Next i End Sub 質問内容からこのようなものかと。 はずしていたらスルー。

関連するQ&A

  • 連番入力について。

    連番入力について。 環境:ACCESS2000 状況:フォーム(名称:在庫管理)    フォーム上にテキストボックス(名称: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仕入先)に入力されたものを全ての品番に対応した    商品名及び仕入先フィールドに登録。 Private Sub command登録_Click() Dim db As Database Dim rs As Recordset Dim i As Long Dim s As String Set db = CurrentDb Set rs = db.OpenRecordset("在庫マスター", dbOpenDynaset) If IsNull(Me!text品番last) Then With rs rs.AddNew rs!品番 = Me!text品番頭 + text品番start rs!商品名 = Me!text商品名 rs!仕入先 = Me!text仕入先 End If If Not IsNull(text品番last) Then For i = Me!text品番start To text品番last ← ここがエラー(エラー13 型が一致しません) With rs rs.AddNew rs!品番 = Me!text品番頭 + CStr(i) rs!商品名 = Me!text商品名 rs!仕入先 = Me!text仕入先 End If rs.Update End With Next i rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub 上記動作は問題ないのですが、 何故か text品番last が空白の場合 2・3回に1度エラーがでます。 ※成功する時もある。 これを回避するにはどうしたら良いのでしょうか? 何卒ご教授の程宜しくお願い致します。

  • フォームを利用したデータ登録について。

    フォームを利用したデータ登録について。 環境:ACCESS2000 状況:フォーム(登録フォーム)    フォーム上コントロール     テキストボックス(品番頭、品番start、品番last、サイズ、商品名)     コマンドボタン(登録ボタン)    テーブル(商品マスター)    フィールド(品番  /  サイズ  /  商品名) 仕様: 登録フォームに必要事項を入れ、テーブルに新規データ追加をする。    その際、品番頭と品番startとを合体させ、テーブル品番フィールドに登録。    また連番の場合、品番startから品番lastまでの数字をそれぞれ品番頭と合体させ    サイズと商品名を登録する。    ※品番lastが空白の場合、無視し品番startのみ適用する。 コード: Private Sub 登録ボタン_Click()  Dim db As DAO.Database  Dim rs As DAO.Recordset  Dim i As Long  Set db = CurrentDb  Set rs = db.OpenRecordset("商品マスター", dbOpenDynaset) If Not IsNull(Me!品番last) Then  For i = Val(Me!品番start) To Val(Me!品番last)   rs.AddNew    rs!品番 = Me!品番頭 & CStr(i)    rs!サイズ = Me!サイズ    rs!商品名 = Me!商品名   rs.Update  Next i ElseIf IsNull(Me!品番last) Then   rs.AddNew    rs!品番 = Me!品番頭 & Val(Me!品番start)    rs!サイズ = Me!サイズ    rs!商品名 = Me!商品名   rs.Update End If  rs.Close   Set rs = Nothing  db.Close   Set db = Nothing MsgBox "登録完了" End Sub 今回新規データ追加作業をしていたところ、なぜかエラーは起きず メッセージまででているのですが、テーブルを開けて確認すると 登録されてない事がたびたびあり、原因がわからないため 質問させて頂きました。 コードがおかしい、これが足りない等正確に動かすために 色々教えて頂ければと思います。

  • MS アクセス クエリ作成 名称抽出方法

    アクセスのクエリの作成がわかりません(アクセスのバージョンは2003です) アクセスの初心者です。Webをみたり参考書を見たりしているのですが、、、クエリの作成方法が分からず困っております。どなた操作方法を教えていただけますか。お願いいたします。 抽出したいのは以下の1, 商品明細テーブルから「商品名」全件に対して「商品コード」の頭4桁をキーにして、仕入先テーブルのコードから「名称」を取得する方法です。 当方の作成したクエリは下記の通り操作しましたが、結果はすべて"該当なし"になってしまいます。 ・クエリ作成画面で両テーブルを結合。 ・フィールド欄に以下の式を入力しました 仕入先名称:iif(strcomp(Left([商品明細テーブル].[商品コード],4),[仕入先テーブル].[コード],0)=0,[仕入先テーブル].[ 名称],"該当なし") 1, 商品明細テーブル 商品名 価格 商品コード --------------------------- 商品A \110 AAA01115000 商品B \115 AAA19376122 商品C \112 AAA09472391 商品D \115 AAA22947555 商品E \120 AAA09422138 商品F \165 AAA13871911 商品G \150 AAA09272611 商品H \210 AAA27319313 2, 仕入先テーブル コード 名称 AAA0 XXXX商事 AAA1 YYYY産業 AAA2 (株)ZZZZ 恐れ入りますが、ご回答の程宜しくお願いいたします。

  • accessあいまい条件抽出についてご教示ください

    OS:Windows 7 Soft:access2010 商品データ管理を作成しております。 商品テーブルには、仕入先品番A・B・Cの3フィールドがあります。 (同商品でも仕入先により品番が異なるため必要なフィールドになります) フォームに非連結のテキストボックスとボタンを配置しました。 テキストボックスへ入力した値が含まれる全てのレコードを仕入先品番3フィールドから抽出されるVBAコードをご存知でしたらご教示頂きたくお願い致します。 フィールドが1つの場合は成功しましたが、複数のフィールドでは参考資料で調べても自力での解決が不可能な状況であります。 以上、宜しくお願い申し上げます。

  • ACCESS2000での最終データ検索又は抽出について。

    ACCESS2000での最終データ検索又は抽出について。 現在レンタル品管理をACCESS2000にて作成しているのですが、 ACCESSを勉強しながら(ネット検索等)作成しており ACCESSを始めて10日の初心者のため、行き詰ってしまったので ご質問させて頂きたいと思います。 状況 テーブル:レンタル品マスター       品番      貸出日      返却日     00000     2010/4/1    2010/4/16     11111     2010/4/2    2010/4/5     22222     2010/4/5     00000     2010/4/17    2010/4/20     33333     2010/4/18     00000     2010/4/22     11111     2010/4/23 フォーム:レンタル品管理      テキストボックス(textレンタル品番)      テキストボックス(text貸出日)      テキストボックス(text返却日)      コマンドボタン(command貸出)      コマンドボタン(command返却) 上記2点作成してあり、現在わからなく止まってしまっている所は (1) フォーム上のテキストボックス(textレンタル品番)に入力しエンターキー等を 押したら、入力したレンタル品番の最新の日付(貸出日)をフォーム上text貸出日に 表示させる。 ex textレンタル品番に 00000 と入力しエンターキー等を押すと   text貸出日に自動的に 2010/4/22 と表示される。 (2) (1)で表示させたデータに返却日をtext返却日に入力&command返却を押す事で 更新登録させる。 この2点がわからないのです。 まず(1)は  Private Sub textレンタル品番_AfterUpdate() ここからコードの書き方がわかりません。 多分 ADODB.Recordset 等使い、Max関数で抽出なのかなぁとは 考えているのですが、書き方がわからず、ネット検索で調べてみたものの 私ができ悪いため、理解できず・・・・なのです。 End Sub (2)は、どうしていいのか検討もついておりません。 皆様お手数お掛け致しますが、何卒ご教授の程宜しくお願い致します。 また、説明がわかりずらい・不足している等ございましたら 言って下さい。説明等の訂正・追加を致しますので。

  • access2007でのサブフォームへの入力

    仕入入力画面なんですが メインフォーム(仕入伝票テーブル)サブフォーム(仕入伝票明細テーブル) という構成です。 メインフォームで 仕入先をコンボボックスで指定すると サブフォームの 商品を入力するコンボボックスに メインフォームで選択した仕入先で購入できる商品が選べるように したいのですが、どうすればよろしいでしょうか? メインフォームの仕入先コンボボックスを選択する度に サブフォームの商品コンボボックスで選択できる内容を反映させたい です。 仕入先A : 商品1 商品2 仕入先B : 商品3 商品4 商品5 仕入先C : 商品6 商品7 商品8 商品9 メインフォームで仕入先コンボボックスで仕入先Aを選択すると サブフォームで選択できる商品コンボボックスは商品1と商品2 メインフォームで仕入先コンボボックスで仕入先Bを選択すると サブフォームで選択できる商品コンボボックスは商品3と商品4と商品5 というようなイメージで作りたいです。 どうかよろしくお願いします。

  • ACCESS フォームで入力データを残したいです。

    いつもお世話になっております。 今回はACCESSについてご指導お願い致します。 テーブルからフォームを作成したのですが、テキストボックスで1件目の入力データの内容を2件目入力するときに、そのまま残しておきたいのです。 テキストボックスには日付や品番など入力していくのですが、同じ場合は入力を省きたいと思っています。難しいでしょうか・・? 最近ACCESSの勉強をはじめたところなので、用語などもほとんどわかりません。 宜しくお願い致します。

  • 入力の制限(EXCEL)

    EXCEL(2003)にて シート『仕入れマスター』に   A      B     C 1 仕入れ先 商品名 ・・・ 2 A社      ZZZ ・・・ 3 B社      YYY ・・・ 4 A社      XXX ・・・ 5 C社      RRR ・・・ 6 ・・ と言った形で仕入れ先業者と取扱い商品名を登録して頂く形で シート「仕入明細」     A     B    C     D 1 仕入れ先 商品名 単価  数量 ・・・ 2 3 A列に「仕入れ先」の業者を選択するとB列の入力が仕入れ先 業者が取扱いしている商品から選択して入力出来るようにする 為にはどの様な方法がありますでしょうか。 例えばA列の仕入れ先にA社を選ぶと B列の商品名は仕入れ マスターに登録されたA社取扱い商品のZZZとXXXから 選択して入力出来るようにする。

  • ACCESS フォームの入力で

    フォームの入力でコード番号を入力すると項目が自動入力出来るようにしたくて 2つ目のテキストボックスのコントロールソースに=DLookUp("[商品名]","テーブル2","[商品コード] = [コード] ")と入力したのですが 1つ目のテキストボックスに入力すると そのときは2つ目のテキストボックスは白紙で 一度フォームを閉じてから立ち上げると2つ目のテキストボックスにも入力されています。 これは閉じないと入力されないのでしょうか? 1つ目を入力した後に表示されるようにしたいのですが・・・。 よろしくお願いします。

  • アクセスでデータを分配するには

    フォームにテキストボックスが3つあり 企業名を入力するテキストボックスと 駅名を入力するテキストボックスが2つあり登録ボタンを 押下すればテーブルに2つレコードが作成されるようにしたいのですが どうすればいいのでしょうか? 例えばテキスト1の企業名に ●●商事 テキスト2の駅名に銀座 テキスト3の駅名に有楽町と入力し登録ボタンを押下すればテーブル のフィールド名、企業名に●●商事フィール名 駅名に銀座というデータともうひとつ とフィールド名、企業名に●●商事フィール名 駅名に有楽町というデータの2つのデータが テーブルに作成されるようにしたいのですが。。