Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1813 / 2272 ツリー ←次へ | 前へ→

【5141】新規レコードの追加について 水無月 05/5/27(金) 15:56 質問[未読]
【5145】Re:新規レコードの追加について クロ 05/5/27(金) 18:01 回答[未読]

【5141】新規レコードの追加について
質問  水無月  - 05/5/27(金) 15:56 -

引用なし
パスワード
   指定した範囲の新規レコードを一度にたくさん追加したいのですが、方法が分かりません。

現在の状況を説明します。

まず、「商品」というテーブルがあり、「No(主キー)」「種類」「値」「番号」というフィールドがあり、全てテキスト型です。この「No」は連番ですが1から始まるわけではありません。そこで範囲を指定して追加したいのです。このとき同時に「種類」「番号」も追加します。

この作業はフォーム上で行いたいと思います。
[No開始]、[No終了]、[種類]、[番号開始]、[番号数]というテキストボックスを設置します。(「値」はこの段階では空欄のままです。)
[No開始]〜[No終了]で連番の範囲を指定し、[種類]に入力した文字を新規レコードの全ての「種類」フィールドに追加します。そして「番号開始」に入力した値を最初にして[番号数]で指定した数ごとに1加算していきます。

例えば、それぞれに下記内容を入力したとします。
[No開始] = A70001
[No終了] = A71000
[種類] = HB
[番号開始] = 028
[番号数] = 8

このとき行いたい処理は下記のようなことです。
A70001からA71000までの1000個の新規レコードを追加して、全ての種類に"HB"と自動入力されます。A70001〜A70008までの8個のレコードの番号は"028"、A70009〜A70016までの8個は"029"・・・と以後8個ごとに1加算された番号が自動入力されます。

拙い説明で申し訳ありません。ご理解頂けましたでしょうか?

本当に困っています。助けてください!
どなたかご教授宜しくお願いいたします。

【5145】Re:新規レコードの追加について
回答  クロ  - 05/5/27(金) 18:01 -

引用なし
パスワード
   Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Long, X As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("商品", dbOpenDynaset)
X = Me.番号開始
For i = 1 To CLng(Replace(Me.No終了, "A", "")) - (CLng(Replace(Me.No開始, "A", "")) - 1)
rs.AddNew
  rs![No] = "A" & CStr((CLng(Replace(Me.No開始, "A", "")) - 1) + i)
  rs![種類] = Me.種類
  If i < Me.番号数 Then
   rs![番号] = Me.番号開始
  ElseIf i Mod Me.番号数 = 0 Then
   X = X + 1
   rs![番号] = Format(X, "000")
  Else
   rs![番号] = Format(X, "000")
  End If
rs.Update
Next i
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
MsgBox "終わったよ"

こんな感じでしょうか?

1813 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078263
(SS)C-BOARD v3.8 is Free