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

时间:2014-03-13 13:14:38

标签: ms-access dao populate recordset

我正在使用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

这显然很好。

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

就像最后一个记录值在功能完成工作后保持“活动”状态。我不明白为什么会这样。

元素pk是字母数字,例如:“A1”,然后我构建一个将A与1分开的函数,将+1添加到数字并再次连接值,因此结果为“A2”

1 个答案:

答案 0 :(得分:0)

我使用自动编号字段作为主键解决它,将原始pk(字母数字)保留为公共字段,然后我可以完全按照我想要的方式保存我的vba代码。