Evitar Duplicados de DNI por fechas

Al parecer debería ser sencillo pero no lo he podido lograr. La cuestión es que tengo la siguiente tabla en la cual yo permito los duplicados de DNI, pero no quiero que se duplique un mismo registro ( DNI) equivalente a una misma fecha. Osea pueden existir muchos registros con el mismo DNI pero tan solo con fechas únicas y no duplicadas dentro del mismo registro.

Como muestro en la siguiente imagen:

Lo que deseo es que en el siguiente formulario me alerte con un mensaje la duplicidad de esta información y no permita el ingreso de la misma. De preferencia quisiera que esto sucediera al momento de ingresar la fecha, ya que, en la pestaña Detalle personal es donde se ingresa el DNI (paso anterior a la fecha). Por lo tanto de este modo me ahorro el tiempo de ingresar toda la información duplicada.

2 respuestas

Respuesta
2

Pon éste Código en e Módulo del Formulario donde tengas la "Fecha" que supongo es el mismo que donde tienes el DNI, aunque sea otra pestaña.

Private Sub Fecha_BeforeUpdate(Cancel As Integer)
Dim CriterioCuenta As String
Dim ApunteDiaDNI As Byte
On Error GoTo Fecha_BeforeUpdate_TratamientoErrores
'Compruebo si la Combinación DNI-Fecha ya existe
CriterioCuenta = "[Fecha] =#" & Format(Me.Fecha, "mm/dd/yyyy") & "#"
ApunteDiaDNI = Nz(DCount("[ID DNI]", "AsignarServicios", CriterioCuenta), 0)
If ApunteDiaDNI > 0 Then
        MsgBox "Ya Existe un Apunte que coincide con ese DNI y la Fecha........" & vbCrLf & "Repasa la entrada e intenta de nuevo", vbCritical, "Fecha y DNI Duplicados"
        DoCmd.CancelEvent
        Me!Fecha.Undo
End If
Fecha_BeforeUpdate_Salir:
On Error GoTo 0
Exit Sub
Fecha_BeforeUpdate_TratamientoErrores:
MsgBox "Error " & Err & " en Procedimiento.: Fecha_BeforeUpdate de Documento VBA: Form_NombreDelFormulario (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume Fecha_BeforeUpdate_Salir
End Sub

Los Nombres los he sacado de lo que veo en tu pregunta. Si no son esos debes cambiarlos. Un saludo >> Jacinto

Muchas Gracias 

Hola sabes el código me da error luego de limpiar la tabla y crear nuevos registros. intento poner otro registro con otro DNI pero con la misma fecha y no me deja adjunto pantallazo

quiero que me deje poner registros con dni duplicados pero no siendo asi una misma fecha con un mismo dni..ciertamente como se mostraba en la imagen anterior :

Ejemplo:

DNI 158134438 FECHA 01-05-2018 =OK

DNI 164258152 FECHA 01-05-2018 =OK

DNI 158134438 FECHA 01-05-2018 =ALERTA DUPLICIDAD

DNI 164258152 FECHA 02-05-2018 =OK

Ciertamente falta en el CriterioCuenta lo esencial. O sea el DNI.

Sustituye el CriterioCuenta por ésta otra línea, si es que el Campo ID DNI es texto.

CriterioCuenta = "[ID DNI] = '" & Me![ID DNI] & "'" & " AND " & "[Fecha] =#" & Format(Me.Fecha, "mm/dd/yyyy") & "#"

O por ésta otra si ese campo es Numérico.

CriterioCuenta = "[ID DNI] = " & Me![ID DNI] & " AND " & "[Fecha] =#" & Format(Me.Fecha, "mm/dd/yyyy") & "#"

Ya me contarás. Un saludo >> Jacinto

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas