【问题标题】:How to properly finish an access database transaction with DAO vba?如何使用 DAO vba 正确完成访问数据库事务?
【发布时间】:2014-03-13 13:14:38
【问题描述】:

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

【问题讨论】:

    标签: ms-access dao populate recordset


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2016-06-13
      • 2016-10-07
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多