문제

I'm working with DAO recorsets, the basic idea is to populate one table with records many times as the given argument indicates (limit).

It appears to work, but suddenly when I want to use the form again, it throws 3022 error. When I see table values, none of them is duplicated. I delete all records from that table and refresh table and form. The table doesn't show any value until I refresh the form. The unique value that is shown is the last value i try to save in database.

Here is a little bit of code:

Private Sub add_element(loops_number As Double)
   i = 1
   While (i < CDbl(loops_number))
       function
       i = i + 1
   Wend
End Sub

That is working apparently fine.

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

It's like last record values stays "active" after function finish work. I don't get why this happens.

Element pk is alphanumeric e.g. : "A1", then I build a function that separates A from 1,add +1 to number and concatenate values again, so the result is "A2"

도움이 되었습니까?

해결책

I resolved it using an Autonumber field as primary key keeping the original pk (alphanumeric) as a common field then I could mantain my vba code exactly like I wanted it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top