質問: Accessについて No 品名 合計数 梱包上限 1 りんご 20 10 2 みかん 30 20 3 いちご 10 3 というデータを No 品名 合計数 梱包上限 1 りんご 10 10 1 りんご 10 10 2 みかん 20 20 2 みかん 10 20 3 いちご 3 3 3 いちご 3 3 3 いちご 3 3 3 いちご 3 1 といったように、梱包上限を参照してレコードを分割したいのですが、本やネットで調べてもどうにもやり方が分かりませんでした。 Excelの方で楽な方法があれば、そちらでも大丈夫なのですが、パソコンに不慣れな方でも操作できるようにしたいため、Access上で分割できると大変助かります。 どなたかわかる方いましたらご教示下さい。 よろしくお願いします。
回答: 見本の最後の 3 いちご 3 1 は 3 いちご 1 3 の誤記ですよネ。 VBAで処理する方法です。 No 品名 合計数 梱包上限 のテーブル名を T受注 梱包用データのテーブルを新規に作成して下さい。 テーブル名は T梱包 フィールドは下記の3項目です。 No 品名 梱包数 下記がVBAのコードです。 Sub 梱包用分割() Dim db As Database Dim Irs As Recordset Dim Ors As Recordset Dim i As Integer Dim n As Integer Dim 合計数 As Integer Set db = CurrentDb Set Irs = db.OpenRecordset("T受注") Set Ors = db.OpenRecordset("T梱包") db.Execute "DELETE FROM T梱包;" For i = 1 To Irs.RecordCount 合計数 = Irs!合計数 For n = 0 To Irs!合計数 \ Irs!梱包上限 If 合計数 >= Irs!梱包上限 Then Ors.AddNew Ors!No = Irs!No Ors!品名 = Irs!品名 Ors!梱包数 = Irs!梱包上限 Ors.Update Else If 合計数 > 0 Then Ors.AddNew Ors!No = Irs!No Ors!品名 = Irs!品名 Ors!梱包数 = 合計数 Ors.Update End If End If 合計数 = 合計数 - Irs!梱包上限 Next n Irs.MoveNext Next i Irs.Close Ors.Close db.Close MsgBox "処理終了" End Sub