Me gusta ir más seguro prefiero recorrer el recordset borrar con DELETE y actulizar con UPDATE. En este ejemplo el campo cn es entero largo y valor predeterminado cero (0) no se puede colocar como clave principal SIN duplicados... no funcionaría.
TABLA
FORMULARIO
El campo cn está bloqueado y sin punto de tabulación.
EVENTOS DEL FORMULARIO
El formulario tiene una función incorporada para obtener el siguiente número de cn:
Función para obtener el nuevo cn:
Function nuevo() As Long
nuevo = Nz(DMax("cn", "Dasientos"), 0) + 1
End Function
Procedimientos del formulario:
Tiene como fin habilitar y deshabilitar el botón de eliminación cuando se encuentra en un registro nuevo.
Al Activar Registro
Private Sub Form_Current()
If Me.NewRecord Then
Me.cmdElimina.Enabled = False
Exit Sub
Else
Me.cmdElimina.Enabled = True
End If
End Sub
Contiene tres (3) botones de comando: Agregar, Eliminar y Agregar.
Código botón Agregar:
Private Sub cmdAgregar_Click()
DoCmd.GoToRecord , , acNewRec
Me.cn = nuevo()
Me.algo.SetFocus
End Sub
El botón Eliminar tiene este código;
Private Sub cmdElimina_Click()
On Error GoTo hay_err
Dim db As Database
Dim rs As Recordset
'Retiro el registro
If MsgBox("¿Está seguro de retirar el cn " & Me.cn & "?", vbQuestion + vbYesNo + vbDefaultButton2, "Retirar cn") = vbYes Then
DoCmd.SetWarnings (False)
DoCmd.RunSQL "DELETE * FROM Dasientos WHERE cn=" & Val(Me.cn) & ";"
DoCmd.RunSQL "UPDATE Dasientos SET cn=0 WHERE cn>0;"
Me.Requery
Me.Refresh
Else
Exit Sub
End If
'Edito el consecutivo cn
Set db = CurrentDb
Set rs = db.OpenRecordset("Dasientos")
Do Until rs.EOF
rs.Edit
rs!cn = nuevo()
rs.Update
rs.MoveNext
Loop
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
hay_err_exit:
Exit Sub
hay_err:
MsgBox Err.Number & " " & Err.Description, vbInformation, "Error.."
Resume hay_err_exit
End Sub
El botón Guardar tiene una macro incrustada creada con el asistente, aunque no soy partidario de las macros lo hice en este ejemplo.
Ejemplo, vamos a retirar el cn=2, Verde de acuerdo con la figura de la tabla y vamos a adicionar un registro en el campo algo=Negro.
Este es el reultado no está el registro anterior que era cn=2 y algo=Verde, el algo=Rosado que estaba en cn=3 pasó a 2. Y el negro quedó en el cn=5
Bueno no sé si esta era tu inquietud, si quieres el ejemplo escríbeme a [email protected]