Tengo una tabla de clientes en la cual la clave primaria es el código de cliente (un entero). Al agregar un cliente hago un moveLast y cojo el código de cliente y le sumo 1, y luego lo guardo.
Siempre se ha guardado bien:
First___________Last
1 2 3 4 ..... 50 51 52
Hasta que a partir de ahora sin haber modificado el código me lo muestra así:
First______________________Last
70 71 72 1 2 3 4 ..... 66 67 68 69
Y cuando hago el moveLast para coger el último código de cliente, me lo mueve al 69 i coge ese código, de esta manera el nuevo cliente tiene el código 70 i me da error al tener la clave primaria repetida.
Aquí les dejo el código de nuevo cliente y el de guardar.
Código:
'''''NOU
Private Sub Nou()
On Error GoTo errors
Dim ultimCodi As Long
HabilitarCaixes
InhabilitarToolbar
InhabilitarBotons
Me.Toolbar1.Buttons(7).Enabled = True 'guardar
Me.Toolbar1.Buttons(8).Enabled = True 'cancelar
Me.adoClients.Recordset.MoveLast
ultimCodi = Me.txtCodi
Me.adoClients.Recordset.AddNew
Me.txtCodi = ultimCodi + 1
Me.txtNom.SetFocus
eixir:
Exit Sub
errors:
MsgBox Err & " - " & Err.Description
Me.adoClients.Recordset.CancelUpdate
Resume eixir
End Sub
Código:
Espero haberme explicado bien. Y muchas gracias por haber leido el mensage. '''''GUARDAR
Private Sub Guardar()
On Error GoTo errors
If Me.txtNom <> "" Then
Me.adoClients.Recordset.Update
End If
activar_botons:
InhabilitarCaixes
HabilitarToolbar
HabilitarBotons
Toolbar1.Buttons(7).Enabled = False 'guardar
Toolbar1.Buttons(8).Enabled = False 'cancelar
If Me.txtNom = "" Then
MsgBox "Has de plenar el Camp del Nom Obligatoriament", vbInformation, "Error"
Cancelar
Nou
End If
Me.adoClients.Recordset.Requery
eixir:
Exit Sub
errors:
If MsgBox(Err.Description, vbCritical + vbRetryCancel, "Error") = vbCancel Then
Me.adoClients.Recordset.CancelUpdate
Resume activar_botons
Else
Me.txtNom.SetFocus
Resume eixir
End If
End Sub


