プロが教えるわが家の防犯対策術!

連番入力について。

環境: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度エラーがでます。
※成功する時もある。

これを回避するにはどうしたら良いのでしょうか?

何卒ご教授の程宜しくお願い致します。

A 回答 (1件)

まずは文字列の結合に+を使うのを止め、&を用いる。



> text品番startに数字4桁(登録したい番号の開始数字)、
> text品番lastに数字4桁(登録したい番号の最後)、
常に数字4文字で構成されてはいるが、文字列でしょ?
数値で扱うつもりなら、FORMATで整形しないと。

rs!品番 = Me!text品番頭 & Format(text品番start, "0000")
    • good
    • 0
この回答へのお礼

bin-chanさんありがとうございます。

数値型に統一指定しておけば良かったのですね。

どうやら今回数字は3桁~5桁あったようで
0は使いたくないとの事があり
Val()を使い指定してみましたところ
今のところ(まだ10回程度)試してエラーは出ませんでした。

誠にありがとうございました。

お礼日時:2010/04/30 17:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!