** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Limitar registros en formulario por fecha y turno
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Limitar registros en formulario por fecha y turno

 Responder Responder
Autor
Mensaje
xavit79 Ver desplegable
Nuevo
Nuevo


Unido: 12/Noviembre/2024
Localización: Barcelona
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavit79 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Limitar registros en formulario por fecha y turno
    Enviado: 12/Noviembre/2024 a las 18:34

Buenas, me uno este foro, aunque ya lo consultaba sin estar registrado Tongue

Ahora tengo una consulta que voy a ver si me ayudáis desde este pozo de sabiduría...Wink

Estoy atascado dado que he creado un formulario de envíos y quiero limitar a máximo 10 envíos por 
fecha y franja horaria (10 por cada condición) serían 20 por fecha (10 mañana y 10 tarde).

No sé cómo plantearlo... 

Pero en caso de estar completo debería indicar un mensaje de "Franja horaria completa - seleccionar otra fecha/franja horaria"

A ver si me podéis ayudar...

Gracias de antemano
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Noviembre/2024 a las 19:02
Hola y bienvenido al foro (aunque ya nos visitaras de forma anónima)

Cuantas más veces lo leo más dudas me surgen...

Se entiende que los envíos (efectivos o programados) quedan registrados en alguna tabla con el timestamp o momento de envío previsto.

Por franja horaria entiendo mañana (pongamos hasta las 14 horas) o tarde. Si es por hora, lo indicas.

En el momento de entrar un registro en el formulario, cuando se rellena el timestamp, hay que realizar la cuenta de registros que ya existen por esa franja. 

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
xavit79 Ver desplegable
Nuevo
Nuevo


Unido: 12/Noviembre/2024
Localización: Barcelona
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavit79 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Noviembre/2024 a las 09:36
Publicado originalmente por xavi xavi escribió:

Hola y bienvenido al foro (aunque ya nos visitaras de forma anónima)

Cuantas más veces lo leo más dudas me surgen...

Se entiende que los envíos (efectivos o programados) quedan registrados en alguna tabla con el timestamp o momento de envío previsto.

Por franja horaria entiendo mañana (pongamos hasta las 14 horas) o tarde. Si es por hora, lo indicas.

En el momento de entrar un registro en el formulario, cuando se rellena el timestamp, hay que realizar la cuenta de registros que ya existen por esa franja. 

Un saludo

Antes de nada, gracias por interesarte y responder!

Leyéndome veo que me faltan detalles para una respuesta correcta.

A ver si condigo despejar algunas dudas.

El fin es poder agendar el nº de envíos de un repartidor a un máximo de envíos según la capacidad. Estos envíos los van solicitando diferentes dptos.
Para ello, he generado un formulario con varios campos de un tabla, entre esos campos el de "fecha" con campo fecha (sale calendario y se selecciona fecha) y otro campo llamado "Franja horaria" en donde he generado un desplegable con dos opciones "Mañana" y "Tarde" posteriormente hay más campos como nº de encargo, cliente, dirección, etc... 
Y finalmente un botón para agregar el registro a la tabla...

Pero necesito que haya una restricción de envíos por día y franja horaria. Máximo pueden haber 10 envíos/registros por fecha y franja horaria.
En caso de ya tener 10 registros por cada fecha y franja horaria, debe saltar un mensaje indicando que "La fecha selecciona y franja horaria ya están completos y que se debe seleccionar otra opción".

Espero haberme explicado mejor esta vez. Disculpas de antemano.

Creo que la solución es hacer un cuenta de franja horaria y fecha. Si se llega a la cantidad deseada -10- , que dé el error. Pero no sé cómo hacerlo...
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Noviembre/2024 a las 22:24
Hola,

Dado que hay 2 campos que incluyen en el criterio (fecha y franja), yo optaría por crear una función que llamaría en el evento AfterUpdate de cada uno de esos campos.

Crea un función independiente llamada, por ejemplo, AdmiteEnvio en el propio formulario. 

Asumo un control Fecha y otro Franja para introducir los datos y un botón cmdSalvar para agregar registros a la tabla.

Function AdmiteEnvio()
    ' Declaramos la variable
    Dim strCriterio As String

    ' Desactivamos el botón por defecto
    Me!cmdSalvar.Enabled = False
    
    ' Evaluamos si hay fecha
    If Not IsDate(Me!Fecha) Then
        Exit Function
    End If
    
    ' Evaluamos si hay franja
    If Nz(Me!Franja, "") = "" Then
        Exit Function
    End If
    
    ' En este punto tenemos Ambos datos: creamos un criterio
    ' Nota: la fecha en formato americano y delimitada por #. Se asume que Franja es un texto y se delimita por '
    strCriterio = "Fecha = #" & Format(Me!Fecha, "mm/dd/yyyyy") & "# And Franja = '" & Me!Franja & "'"
    ' Contamos los registros que cumplen esa condición
    If DCount("*", "tblDatEnvios", strCriterio) >= 10 Then
        MsgBox "La fecha seleccionada y franja horaria ya están completos y que se debe seleccionar otra opción", vbExclamation
        Exit Function
    End If
    
    ' En este punto es correcto por lo que habilitamos el botón
    Me!cmdSalvar.Enabled = True
End Function


En el evento AfterUpdate de ambos controles (Fecha y Franja), llama a la función.

Si el código requiere un tercer criterio (sospecho que Repartidor), añádelo a la función.

Un saludo


Editado por xavi - 14/Noviembre/2024 a las 22:25
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable