Espero que haya entendido de dar de alta uno con el mismo número, para mi es renumerar las solicitudes de la fecha. Tengo este ejemplo con 1 tabla 1 formulario y 1 módulo
TABLA
FORMULARIO
En el campo fechasol en el evento Después de actualizar tengo el siguiente código:
Private Sub fechasol_AfterUpdate()
If Me.NewRecord Then
Me.solicitud = sgtesol(Me.fechasol)
End If
End Sub
Obtengo del número de la siguiente solicitud con la función sgtesol().
Public Function sgtesol(mfecha As Date) As String
Dim strSQL As String
Dim strAux As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim aux As Integer
strAux = Year(mfecha) & Format(Month(mfecha), "00") & Format(Day(mfecha), "00")
strSQL = "SELECT Count(tblsolicitud.solicitud) AS CANTIDAD FROM tblsolicitud " & vbCrLf
strSQL = strSQL & " HAVING Mid([solicitud],1,8)='" & strAux & "'"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
sgtesol = strAux & "01"
Else
sgtesol = strAux & Format(rs!CANTIDAD + 1, "00")
End If
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Function
Ahora voy a retirar la solicitud número 2021072005 haciendo clic sobre el botón Retirar me preguntará con el siguiente mensaje.
Hago clic en Sí y obtengo.
CÓDIGO DEL BOTÓN RETIRAR
Private Sub btnRetirar_Click()
Dim temfecha As Date
If MsgBox("¿Está seguro que retira la solicitud " & Me.solicitud & "?", vbQuestion + vbYesNo + vbDefaultButton2, "Retiro") = vbNo Then
Exit Sub
End If
temfecha = Me.fechasol
CurrentDb.Execute "DELETE FROM tblsolicitud WHERE ID=" & Me.ID
Me.Requery
If DCount("*", "tblsolicitud", "fechasol=" & Format(temfecha, "\#mm\/dd\/yyyy\#")) > 0 Then
Call renumera(temfecha)
Me.Requery
DoCmd.GoToRecord , , acNewRec
End If
End Sub
Este procedimiento llama la función renumera().
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim faux As String
Dim cuenta As Integer
Dim aux As String
faux = Format(mfecha, "\#mm\/dd\/yyyy\#")
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblsolicitud WHERE fechasol=" & faux & " ORDER BY ID")
cuenta = 0
rs.MoveFirst
Do Until rs.EOF
aux = Year(mfecha) & Format(Month(mfecha), "00") & Format(Day(mfecha), "00") + Format(cuenta + 1, "00")
rs.Edit
rs!solicitud = aux
rs.Update
cuenta = cuenta + 1
rs.MoveNext
Loop
End Function
Aunque utilicé funciones se podría haber hecho con procedimientos a nivel de formulario. En ejemplo considero el campo solicitud de tipo texto, si es numérico las funciones cambian.