在Access中复制记录并附加到包含一个字段的表

时间:2017-09-25 01:56:56

标签: sql vba ms-access

对于编程Access,我是一个新手,所以我请求一些帮助。我有一个包含6个字段的表:

PolicyNum, Name, Address, InsuredValue, Status, DuplicateNumber

状态字段下,如果记录的值表示“重复”,那么我需要复制该记录,附加到另一个表( tblPolicies ),然后重复这一步,但这次追加相同的记录,但是有一个' -01'作为添加到 PolicyNum 的后缀。我可能需要复制该记录几次,并根据 DuplicateNumber 字段下的数字后缀' -02',' -03'等。所以,作为一个例子,我有:

PolicyNum, Name, Address, InsuredValue, Status, DuplicateNumber
FL65875, John Doe, 545 Anywhere Street, $10000, Duplicate, 2

所以,我会将上面显示的确切记录追加到 tblPolicies ,但需要复制它,因为它在 Status 下表示为,我需要将它复制两次...所以我需要在 PolicyNum 下面添加两个以下更改的记录:

PolicyNum, Name, Address, InsuredValue, Status, DuplicateNumber
FL65875-01, John Doe, 545 Anywhere Street, $10000, Duplicate, 2
FL65875-02, John Doe, 545 Anywhere Street, $10000, Duplicate, 2

从上面可以看出, PolicyNum 后缀为-01和-02,这是唯一的变化。在追加之后,我将摆脱 tblPolicies 的目标表中的Status和 DuplicateNumber 字段。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

考虑使用记录集更新,在迭代源表的情况下,在For循环内,将新记录添加到目标表映射字段,并在 PolicyNum 上添加后缀连接。甚至忽略最后两列,因为它们不需要。

Dim src_rst As Recordset, dest_rst as Recordset

Set src_rst = CurrentDb.OpenRecordset("SELECT * FROM mytable WHERE [Status] = 'Duplicate' AND DuplicateNumber > 0")    
Set dest_rst = CurrentDb.OpenRecordset("tblPolicies")

src_rst.MoveFirst

Do While src_rst Not .EOF
   For i = 1 To src_rst![DuplicateNumber]
       dest_rst.AddNew

       dest_rst![PolicyNum] = src_rst![PolicyNum] & "-0" & i
       dest_rst![Name] = src_rst![Name]
       dest_rst![Address] = src_rst![Address]
       dest_rst![InsuredValue] = src_rst![InsuredValue]

       dest_rst.Update 
   Next i

   src_rst.MoveNext
Loop

dest_rst.Close(): src_rst.Close()
Set dest_rst = Nothing: src_rst = Nothing