連番入力についての質問

このQ&Aのポイント
  • ACCESS2000の環境で、在庫管理フォームで連番入力をしたい場合、text品番頭、text品番start、text品番last、text商品名、text仕入先の情報を入力し、command登録ボタンでテーブルに登録する処理を作成しています。しかし、text品番lastが空白の場合にエラーが発生してしまい、回避方法がわかりません。ご教授をお願いします。
  • ACCESS2000の在庫管理フォームでの連番入力処理において、text品番lastが空白の場合にエラーが発生する問題があります。このエラーを回避する方法を教えてください。
  • ACCESS2000の在庫管理フォームでの連番入力処理において、text品番lastが空白の場合にエラーが起きることがあります。このエラーを回避する方法をお教えください。
回答を見る
  • ベストアンサー

連番入力について。

連番入力について。 環境: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度エラーがでます。 ※成功する時もある。 これを回避するにはどうしたら良いのでしょうか? 何卒ご教授の程宜しくお願い致します。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

まずは文字列の結合に+を使うのを止め、&を用いる。 > text品番startに数字4桁(登録したい番号の開始数字)、 > text品番lastに数字4桁(登録したい番号の最後)、 常に数字4文字で構成されてはいるが、文字列でしょ? 数値で扱うつもりなら、FORMATで整形しないと。 rs!品番 = Me!text品番頭 & Format(text品番start, "0000")

taho1999
質問者

お礼

bin-chanさんありがとうございます。 数値型に統一指定しておけば良かったのですね。 どうやら今回数字は3桁~5桁あったようで 0は使いたくないとの事があり Val()を使い指定してみましたところ 今のところ(まだ10回程度)試してエラーは出ませんでした。 誠にありがとうございました。

関連するQ&A

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

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

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

    フォームを利用したデータ登録について。 環境: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 今回新規データ追加作業をしていたところ、なぜかエラーは起きず メッセージまででているのですが、テーブルを開けて確認すると 登録されてない事がたびたびあり、原因がわからないため 質問させて頂きました。 コードがおかしい、これが足りない等正確に動かすために 色々教えて頂ければと思います。

  • VBAでフィールドを配列読み

    OS Windows2000 ACCESS 2000 レコードが、住所、名前、DATA1・・・・DATA100 のような時 Set ws = DBEngine.Workspaces(0) Set db = ws.Databases(0) Set qd = db.CreateQueryDef("", Sql) Set rs = qd.OpenRecordset() DATA1~DATA100を取得するのに me.text1.text = rs!data1 me.text2.text = rs!data2 . . me.text100.text = rs!data100 上記のようすると大変なので 配列のように扱う方法は、ないでしょうか? 宜しくお願いします

  • コンボボックスの値取得について

    テーブルはAccess2003で作成 VBは6を使用しています。 Access2003で作成したテーブル(t_KEN)の県名をコンボボックス(cmbKen)に表示させ、選択したひとつの県名とその県コードを テキストボックス(txtKENMEI.text、txtKenCode.text)に格納したいと思います。 以下の様にコンボボックスに県名を表示する所までは できたのですが、そこから選択した県名と県コードをそれぞれの テキストボックスに格納する所がわかりません。 初歩的過ぎるのかもしれませんが、初心者であり何卒ご教授頂けます様 お願いいたします。 テーブル(t_KEN) KENCODE KENMEI 1 北海道 2 青森県 3 岩手県 4 秋田県 ・  ・ ・  ・ ・  ・ Private Sub cmbKen_GotFocus() Dim DB As Database Dim RS As Recordset Set DB = OpenDatabase("c:\TEST\jdb.mdb") Set RS = DB.OpenRecordset("t_KEN") Do Until RS.EOF Me.cmbKen.AddItem RS.Fields("KENMEI") RS.MoveNext Loop 'ここ以降の記述が困ってます。 txtKENMEI.Text=・・・ txtKenCode.Text=・・・ RS.Close Set RS = Nothing DB.Close Set DB = Nothing End Sub

  • テキストボックスに入力してフィルタできるボタン

    access2000です。 フォームで テキストボックスに文字列を入れると商品フィールドと完全一致するデータだけ表示するボタンを付けたくなりました。 テキスト5 というテキストボックスをつけ コマンドボタンを貼り付け コマンドボタンのプロパティからイベントプロシージャーから Me.filter="商品='" & textテキスト5 & "'" を貼り付ければいいと考えましたが、うまくいきません。 手持ちの書籍ではMe.filterの解説がないので手探りでやっています。 どうすればいいのでしょうか? お願い致します。

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

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

  • access テキストボックスへSetFocus

    QRコード読み込み後にDBに書込み、テキストボックスへ戻るプログラムを作成しているのですが、SetFocusが聞きません。 【実装したいこと】 QRコード内に、カンマ区切りのデータが入っており、QRスキャン後Sprit関数で区切りDBに登録しております。 でその際に、連続して読取出来るようにするために、「AfterUpdate」しております。 【処理】 1.txtsTiket(テキストボックス)にQR読取データを挿入 2.Sprit関数で、データを区切りDBへ書込み 3.txtsTiket(テキストボックス)へ戻る 2.までは問題ありませんが、3.のtxtsTiketへ自動で戻りません。 ○コード Private Sub txtsTiket_AfterUpdate() 'DB変数 Dim db As Database Dim rs As Recordset '変数定義 Dim tID As Integer Dim aly As Variant Dim t店舗CD As Integer Dim t開局日 As Date Set db = CurrentDb() '店舗ID取得 Set rs = db.OpenRecordset("T_ステータス", dbOpenDynaset) rs.Filter = "登録日 " = Date t店舗CD = rs("店舗CD") rs.Close: Set rs = Nothing 'チケットテーブルオープン Set rs = db.OpenRecordset("T_sTiket", dbOpenDynaset) 'チケットID生成 If rs.EOF Then tID = 1 Else tID = DMax("sTiketID", "T_sTiket") + 1 End If 'QRデータ分割 aly = Split(txtsTiket, ",") rs.AddNew rs("sTiketID") = tID rs("店舗CD") = t店舗CD rs("Day-S-No") = aly(0) rs("部門CD") = aly(1) rs("科目CD") = aly(2) rs("チケット名") = aly(3) rs("宿泊日") = aly(4) rs("予約通番") = aly(5) rs("登録日") = Date rs("登録時間") = Time rs.Update Me.txtsTiket.Value = Null ここから ' Me.txtsTiket.SetFocus ' DoCmd.GoToControl "txtsTiket" ここまで rs.Close: Set rs = Nothing db.Close: Set db = Nothing End Sub 下記手法を試しましたが、両方ともうまくフォーカスが移動してくれません。 Me.txtsTiket.SetFocus DoCmd.GoToControl "txtsTiket" また、上記メソッドを、外部プロジージャーにしても動作しません。 DB書込み処理が終わった後、自動的にテキストボックスへ移動する方法はどうしてら良いでしょうかお教え頂けたら幸いです。

  • ACCESS どこがおかしいのか?

    ACCESSで。クエリからフォームを作成し、検索フォームを作成しようとしています。 AND条件とOR条件を作り検索(抽出)を行いたいのですが、何が間違っているのか、 検索をかけるとすべて「登録がありません」になってしまいます。 どこが間違っているのか、もしくは代替案を教えていただけますでしょうか。 以下は記述した、VBAコードです。 Private Sub 検索ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim stFil As String Set db = CurrentDb() Set rs = db.OpenRecordset("Q_Autoweb", dbOpenDynaset) 'オプションボタンで条件を選択 If 検索条件 = 1 Then rs.Filter = "[タイトル]='" & タイトル検索 & "' and [本文]='" & テキスト15 & "'" Else rs.Filter = "[タイトル]='" & タイトル検索 & "' or [本文]='" & テキスト15 & "'" End If Set rs = rs.OpenRecordset Set Me.Recordset = rs If rs.EOF = True Then MsgBox "登録がありません" Else Me.ID = rs!ID Me.案件名 = rs!案件名 Me.タイトル = rs!タイトル Me.本文 = rs!本文 End If rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub よろしくお願いします。

  • accessからsqlserverにアップサイジングしましたが,テーブ

    accessからsqlserverにアップサイジングしましたが,テーブルにデータを入力出来なくなってしまいました。 Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb() Set rs = db.OpenRecordset("確認用", dbOpenDynaset) rs.AddNew rs!品番 = Me.品番 rs.Update 上記のようにDAOを介してテーブルにデータを入れていました。 アップサイジングする前は、問題なかったのですが、どういったことが原因になりますでしょうか?

  • 入力の制限(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から 選択して入力出来るようにする。

専門家に質問してみよう