Validar duplicados múltiples en Access

Tengo una tabla llamada CursosRealizados donde se ingresan el NombreCurso y el ID de la persona. Esta tabla se alimenta de un formulario, mi pregunta es ¿Cómo evitar que una persona (ID) este cargado dos veces para un mismo curso?

1 Respuesta

Respuesta
1

Vamos a suponer que el orden de los cuadros de texto en el formulario sea ese que indicas, En el evento Antes de actualizar del cuadro de texto IdPersona crea un procedimiento de evento y pon

If dcount("*","cursosrealizados","nombrecurso='" & me.nombrecurso & "' and idpersona=" & me.idpersona & "")>01 then

Msgbox"Esa persona ya está matriculada en ese curso", vbokonly,"Tendrás que elegir otro"

Docmd. Cancelevent

end if

Me explico cuando vayas a escribir o elegir un Idpersona, contará en la tabla si ya hay algún registro en que la combinación Nombrecurso e Idpersona sean iguales a los que has puesto. Si fuera así, te aparece el mensaje y al aceptar el cursor se vuelve al control Idpersona, para que lo cambies.

Muchas gracias por tu respuesta Icue! la estoy intentando poner en practica desde ayer pero me salta error, acá está como escribí el código. Disculpa que todavía no entiendo el correcto uso de "Me." cuando hacen referencia a controles o formularios.

Private Sub idPersona_BeforeUpdate(Cancel As Integer)

If DCount("*", "cursosrealizados", "nombreCurso='" & [CursosRealizados Subformulario3].nombreCurso & "' and idPersona=" & [CursosRealizados Subformulario3].idPersona & "") > 1 Then

MsgBox "Esa persona ya está matriculada en ese curso", vbOKOnly, "Tendrás que elegir otro"

DoCmd.CancelEvent

End If

End Sub

Me salta el siguiente error de Visual Basic:    Se ha producido el error "2465" en tiempo de ejecución:  

Microsoft Access no encuentra el campo '1|' al que se hace referencia en la expresión.

Eso pasa cuando haces referencia a un control o un campo que no se llama así. ¿Podrías hacer una copia vacía de la tabla y mandármela a [email protected]

La miro y la reenvío con el formulario

Si lo haces, en el asunto del mensaje pon tu alias Teodolindo, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas