Hola a todos, tengo un pequeño problema con el recordset.
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:
'''''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
Espero haberme explicado bien. Y muchas gracias por haber leido el mensage.