我正在使用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”
答案 0 :(得分:0)
我使用自动编号字段作为主键解决它,将原始pk(字母数字)保留为公共字段,然后我可以完全按照我想要的方式保存我的vba代码。