Mensaje cuando haya campos repetidos y bloquear campos

A ver, necesito hacer dos cosas en la base de datos que no sé cómo poder conseguirlo. Os dejo la base de datos para que sepáis de qué estoy hablando.
https://www.dropbox.com/s/j24yv6ofb10px ... Accdb?dl=0
La primera de ellas hace referencia al formulario "03 Introducción de clientes". Quiero que me salte un mensaje cuando coincidan los campos "Nombre", "Apellidos" y "Fecha de nacimiento" con otro registro introducido anteriormente.
Y el segundo ítem. Este es en el formulario "03 Registros". En el subformulario, quiero que los campos "Hora de reserva" y "Reserva aceptada" no puedan ni seleccionarse, ni que pase el cursor por ellos cuando el campo "Registros" sea falso.

1 Respuesta

Respuesta
2

Que conste que no he visto la base, pero en el primer caso, suponiendo que el cuadro de texto FechaNac lo rellenes después de Nombre y Apellidos y que la tabla se llame Alumnos, en su evento Antes de actualizar puedes poner

If dcount("Nombre","alumnos","nombre='" & me.nombre & "' and apellidos='" % me.apellidos & "' and Fechanac=#" & me.fechanac & "#")>=1 then

Msgbox"Tararí, que te ví"

Docmd. Cancelevent

end if

En el segundo caso, suponiendo que el campo registros sea una casilla de verificación, y que la "rellenes" antes, en su evento Después de actualizar puedes poner

If registros=0 then

[hora de reserva].locked=true

[hora de reserva].tabstop=false

[Reserva Aceptada].locked=true

end if

En caso de ue Registros fuera un cuadro de texto, sustitúyelo por 

If registros="Falso"

Muchas gracias, Icue. El primer código me funciona perfecto.

Tengo problemas con el segundo. Te explico. La casilla de verificación tiene un valor predeterminado de "Sí" en Registros, para que me diferencie los registros que son Reservas (que se introducen en otro formulario distinto, pero aparecen también en Registros). Entonces, de la forma que lo tengo ahora, me lo aplica para todos los registros, pero quiero que discrimine en cada registro individual. Te pongo el código que tengo:

Private Sub Form_Current()
If Registro = 0 Then
[Hora de reserva].Locked = False
[Hora de reserva].Enabled = True
[Hora de reserva].TabStop = True
[Reserva aceptada].Locked = False
[Reserva aceptada].Enabled = True
[Reserva aceptada].TabStop = True
End If
End Sub

Un saludo.

Son datos parecidos pero para dar una idea

Como puedes ver el registro activo es el de Antonio. Si pongo el cursor en él, como Registro es Sí, me deja cambiar algo

Pero si me voy al siguiente registro como Registro=0 por más que le dé al tabulador o intente escribir nada no me deja

El código es

Private Sub Form_Current()
If Registro = 0 Then
Cliente.Locked = True
Ciudad.Locked = True
Pais.Locked = True
ElseIf Registro = -1 Then
Cliente.Locked = False
Ciudad.Locked = False
Pais.Locked = False
End If
End Sub

Ya funciona. Una última cosa. Para que me ponga el campo en gris, ¿cómo se hace?

¿Pero el gris de inhabilitado o que los cuadros tengan el fondo gris?

Si es el primer caso ya lo tenías puesto

[hora de respuesta].enabled=false

En el segundo caso tendrías que añadir

[hora reserva].backcolor= el color que quieras

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas