在MS Access中,我有一个这样的表:
TblA_AutoID SKU数量价格
1 A3323 2 4.53
2 A3313 1 22.20
3 A3323 3 4.59
我想创建一个新表(最好是在新行添加到第一个表时自动填充的表),将每个数量的第一个表拆分为1行,如下所示:
TblB_AutoID TblA_AutoID SKU价格
1 1 A3323 4.53
2 1 A3323 4.53
3 2 A3313 22.20
4 3 A3323 4.59
5 3 A3323 4.59
6 3 A3323 4.59
我在几台机器上工作,一台使用Access 2007,一台使用Access 2013.我猜这需要在VBA中完成,但如果有更简单的方法,那就更好了。
答案 0 :(得分:3)
由于此时您只想从 TableA 的每一行将 Qty 行数添加到 TableB 中,您可以加载每个将表放入单独的DAO.Recordset
并使用 TableA 记录集中的数据来驱动对其他记录集的添加。
我在Access 2010中使用您的示例数据测试了此代码。它会根据您的请求填充 TableB 。
Dim db As DAO.Database
Dim rsA As DAO.Recordset
Dim rsB As DAO.Recordset
Dim lngQuantity As Long
Dim i As Long
Set db = CurrentDb
Set rsA = db.OpenRecordset("TableA", dbOpenSnapshot)
Set rsB = db.OpenRecordset("TableB", dbOpenTable, dbAppendOnly)
With rsA
Do While Not .EOF
lngQuantity = !Qty.Value
For i = 1 To lngQuantity
rsB.AddNew
rsB!TblA_AutoID.Value = !TblA_AutoID.Value
rsB!SKU.Value = !SKU.Value
rsB!Price.Value = !Price.Value
rsB.Update
Next ' i
.MoveNext
Loop
End With
rsB.Close
rsA.Close
那部分相当简单。但是,您在评论中指出,最终您打算将 TableB 与 TableA 中数据的后续更改(更新和删除)同步。这些和解努力将更具挑战性。