Bloquear campo con día y hora según la tabla

Tengo un marcador laboral quisiera hacer que se bloque un campo según día y hora de entrada

1 Respuesta

Respuesta
2

Supongo que te refieres a que una vez puesto un día y una hora en sus respectivos cuadros de texto( que llamaremos Fechaentrada y Horaentrada) de un formulario éstos se queden bloqueados. Todo depende de como lo anotes pero, por ejemplo, puedes poner en las propiedades del formulario en el evento Al activar registro

if not isnull([fechaentrada]) then

fechaentrada.locked=true

end if

If not isnull([horaentrada]) then

horaentrada.locked=true

end if

Pero como te digo todo depende de como lo anotes

Como estas Icue, lo que me quisiera hacer una consulta o VBA es cuando el personal ingresa su código la tabla llamada (MarcaEntradasSalidas) toma el nombre, día y la hora en en cada campo, quiero que otra tabla llamada (Fiesta) que son los días de festivos y feriados día y mes, otra tabla de turnos (Turno 1, Turno2, 3, 4, 5) al personal que le toque turno 1 ejemplo hora de entrada 8 am y si pasa 10 o 15 mintos según configuración no pueda ingresar su marcaje

Lo puedes hacer de varias formas, como te decía todo depende de como anoten o anotes la hora de entrada.

Por ejemplo, vamos a suponer que quien sea llega, escribe o elige el turno y escribe la hora de entrada y hay alguien comprobando, en el evento Antes de actualizar del cuadro de texto puedes poner

If Turno = 1 And Time() >= #8:10:00 AM# Then
MsgBox " La cagaste. ¡ Has llegado tarde !", vbOKOnly, "Estas despedido"
DoCmd.CancelEvent

End If

Otra forma es que si escribe o elige el turno, en el evento Después de actualizar del cuadro de texto Turno puedes poner

DoCmd.RunCommand acCmdSaveRecord
If Turno = 1 And Time() >= #8:10:00 AM# Then
Horaentrada = Time()
Horaentrada.Locked = True
End If

Así, una vez que elija el turno, en HoraEntrada le aparece la hora real y no puede modificarla, y puedes despedirlo con todas las de la ley.

Puedes combinar ambos, o más o menos hacer algo parecido

También puedes poner

select case turno

case is=1

If time()=....

case is=2

if time()=...

case is=3

....

end select

Si el 1, 2 0 3 fueran texto lo tendrías que poner

case is="1"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas