No duplicar un campo Fecha que esta condicionado a otro campo numero

Tengo un Formulario donde doy de alta a clientes correspondiente a BD de hotel con una tabla T_Reservas, donde se anexan las fecha de las entradas de cada cliente, (Fecha Salida - Fecha Entrada) en el campo "Fechas" asociadas a otro campo "N_Hab" y lo que deseo es que no hay duplicadad de registros con la misma fecha en cada numero de habitación, Es decir;

Habitación - Fecha

 1                   15-12-2020 ok

 2                   15-12-2020 ok

 3                   15-12-2020 ok

3 15-12-2020- Error campo duplicado - salir con exlcamación.

2 Respuestas

Respuesta
2

En el evento Antes de Actualizar donde da de alta tendría que hacer la validación, algo como

IF DCOUNT("*",nombretabla,"habitacion=" & me.nrohabitacion & " AND Fecha=" & "#" Format(me.fecha,"mm/dd/yyyy") & "#")>0 then

 MsgBox "Ya está registrada la fecha para esta habitación",vbinformation,"Error.." 

CANCEL=True

END IF

Cambie nombretabla por el nombre de su tabla, nrohabitacion por el nombre en su formulario, igualmente fecha por el nombre que haya dado a este campo.

También lo puede hacer con SQL.

Respuesta
1

Es de suponer que en el formulario primero escribes o eliges habitación y después escribes la fecha. Si es así basta con, en el evento antes de actualizar del cuadro de texto Fecha y suponiendo que la tabla se llame Reservas, crear un procedimiento de evento y entre Private Sub... y End sub poner

If dcount("*","reservas","habitacion=" & me.habitacion & " and fechas=#" & me.fecha & "#")>=1 then

Msgbox"Esa fecha, en esa habitación, ya está cogida", vbokonly+vbinformation,"Debes cambiarla"

Docmd. Cancelevent

end if

Me explico, cuando escribas una fecha y pulses Enter, contará si en la tabla Reservas ya hay algún registro, con ese número de habitación y esa fecha. Si ya lo hay te aparece el mensaje y al Aceptar el cursor se "vuelve" al cuadro de texto Fecha para que lo cambies.

De todas formas, en vez de estar probando con la fecha ¿no es mejor que te muestre los días libres y ocupados ese mes?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas