Access VBA質問箱 IV

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

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


15 / 2240 ツリー ←次へ | 前へ→

【13120】数量が2つならレコードをコピー まき 16/12/1(木) 19:41 質問[未読]

【13126】Re:数量が2つならレコードをコピー hatena 16/12/6(火) 17:57 回答[未読]
【13130】Re:数量が2つならレコードをコピー まき 16/12/11(日) 22:15 お礼[未読]

【13126】Re:数量が2つならレコードをコピー
回答  hatena  - 16/12/6(火) 17:57 -

引用なし
パスワード
   商品数分のラベルを作成したいということなら、クエリでいいでしょう。
ただし、クエリだと更新できませんので、台帳として使用して、
他にもフィールドがあり入力する必用があるならテーブルにする必用がありますね。

その場合、現状のテーブル「テーブル1」自体を書き換えるという方法と、
別に台帳用のテーブルを用意してそこに追加していくという方法が考えられます。

使用方法によって最適な方法は変わってきますのでよく検討してみてください。

とりあえず、現状のテーブルを書き換える場合のコードを例示しておきます。


テーブル1
ID フィールド1 数量
1 データ1 2
2 データ2 3
3 データ3 1



ID フィールド1 数量
1  データ1    1
1  データ1   1
2  データ2    1
2  データ2   1
2  データ2   1
3  データ3   1

に変換Public Function AutoNew()

  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim rsA As DAO.Recordset
  Dim c As Long, i As Long

  Set db = CurrentDb
  Set rs = db.OpenRecordset("SELECT * FROM テーブル1 WHERE 数量>1;", dbOpenDynaset)
  Set rsA = db.OpenRecordset("テーブル1", dbOpenTable, dbAppendOnly) '追加のみ許可

  Do Until rs.EOF
    c = rs!数量 - 1
    rs.Edit
    rs!数量 = 1
    rs.Update
    For i = 1 To c
      rsA.AddNew
      rsA!ID = rs!ID
      rsA!フィールド1 = rs!フィールド1
      rsA!数量 = rs!数量
      rsA.Update
    Next
    rs.MoveNext
  Loop

  rs.Close: Set rs = Nothing
  rsA.Close: Set rsA = Nothing
  db.Close: Set db = Nothing

End Function

【13130】Re:数量が2つならレコードをコピー
お礼  まき  - 16/12/11(日) 22:15 -

引用なし
パスワード
   hatena様

お礼が遅くなってすみません
教えていただいたテーブルで書き換える方法で
できました

ありがとうございました!

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