Ms access 如何使用DAO vba正确完成access数据库事务?

Ms access 如何使用DAO vba正确完成access数据库事务?,ms-access,dao,populate,recordset,Ms Access,Dao,Populate,Recordset,我正在使用DAO recorsets,其基本思想是按照给定参数的指示(限制)多次使用记录填充一个表 它似乎可以工作,但突然,当我想再次使用表单时,它抛出3022错误。当我看到表值时,没有一个是重复的。我从该表中删除所有记录并刷新表和表单。在我刷新表单之前,表不会显示任何值。显示的唯一值是我试图保存在数据库中的最后一个值 下面是一些代码: Private Sub add_element(loops_number As Double) i = 1 While (i < CDbl(l

我正在使用DAO recorsets,其基本思想是按照给定参数的指示(限制)多次使用记录填充一个表

它似乎可以工作,但突然,当我想再次使用表单时,它抛出3022错误。当我看到表值时,没有一个是重复的。我从该表中删除所有记录并刷新表和表单。在我刷新表单之前,表不会显示任何值。显示的唯一值是我试图保存在数据库中的最后一个值

下面是一些代码:

Private Sub add_element(loops_number As Double)
   i = 1
   While (i < CDbl(loops_number))
       function
       i = i + 1
   Wend
End Sub
专用子添加元素(循环数为双精度)
i=1
而(i
这显然很好

Private Sub populate()
   Dim db As DAO.Database
   Dim rst As DAO.Recordset
   Dim last As DAO.Recordset
   Set db = CurrentDb()
   Set rst = db.OpenRecordset("Element", dbOpenTable)
   Set last = rst.Clone


   With rst
   .AddNew
     If (last.RecordCount <= 0) Then
       'here I pass input form values to recordset fields ,because its the first row
       last.Close
       .Update
       .Close
     Else
       last.MoveLast
       !Pk = Custom_pk 'Custom_pk is obtained with a function --- not relevant
       'here I pass remain values from last record to a new one --- because records has the same attributes
       last.Close
       .Update
       .Close
     End If
     Set rst = Nothing
     Set ultimo = Nothing
    End With

End Sub
Private子填充()
Dim数据库作为DAO.Database
将rst设置为DAO.Recordset
最后变暗为DAO。记录集
Set db=CurrentDb()
Set rst=db.OpenRecordset(“元素”,dbOpenTable)
Set last=rst.Clone
用rst
.AddNew

如果(last.RecordCount我使用一个自动编号字段作为主键来解析它,并将原始pk(字母数字)保留为公共字段,那么我就可以完全按照我想要的方式保存我的vba代码