Access - controlar cantidad de envios por semana

 
Vista:
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 20/08/2021 00:17:12
Hola, necesito ayuda con una idea

Tengo una BD de Access en la cual llevo el control de envios a unos clientes, algunos envios estan limitados a uno por semana y otros a uno por mes.
la pregunta es como hacer para evitar hacer mas de un envio al mismo cliente dentro de la semana, o el mes segun el caso.

gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 20/08/2021 08:45:11
Una consulta que agrupe por mes o por semana y que cuente los envíos, devolverá los que se produzcan en el intervalo.

Como el limite esta en uno (en ese intervalo) se podría concluir que:
.- Si el resultado es un cero (no se envió pedido) se le puede tramitar un pedido
.- Cualquier otro valor (uno o mas, puede haber excepciones) es un si, ya se envió algo y ha de esperar al siguiente ciclo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 20/08/2021 15:25:17
Gracias, entiendo lo que me dices, pero sinceramente no sé llegar a hacerlo. Por ejemplo, yo tengo un formulario dividido, en el principal aparecen los datos del cliente y en el subformulario aparecen los pedidos hechos. Entonces lo que yo quisiera es que al agregar un pedido nuevo, si está dentro de la semana en curso me diga que no es posible. Pensé en ponerle un campo fecha en el subformulario para cada pedido pero no sé cómo manipular ese campo para que me límite l cantidad de pedidos en una semana. Pensé en contrar las semanas del año para según l fecha poder controlar pero te digo estoy en blanco no logro un a idea para llevarla a cabo. Por favor si se le ocurriera alguna le agradecería la ayuda. Gracias por su atención
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 20/08/2021 23:40:02
Con la función 'DatePart' se puede obtener la semana de una fecha cualquiera, puede ser un punto de partida el comparar la fecha del ultimo pedido con la fecha del sistema (obteniendo de ambas el numero de semana) y del resultado se aborta o no el crear un nuevo registro.

En función de como se creen los nuevos registros se tendrá que aplicar la condición que impida la generación de nuevos pedidos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 21/08/2021 01:25:08
Hola
Lo entiendo , he estado intentando en el subformulario ubicar en el l último registro del cliente en cuestión el campo fecha y sacar el día de la semana del último envío y de ahí con el día de la semana del envío nuevo que introduzca, abortar o no el nuevo envío. Solo que no logro con mi poco conocimiento de VBA referirme al campo fecha del registro anterior que ya no es el último, pues el último es el que estoy introduciendo.

Osea amigo que ando con la cabeza inflada de probar ,jajja, pero bueno al final se logrará arreglar.

Gracias por sus respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 21/08/2021 01:38:23
Creo que conceptualmente hay un error o que la metodología que se esta utilizando no es la ¿normalizada?.

Lo natural (en Access) es que los registros solo existen a partir de cuando se guardan por primera vez.

Si se esta creando (y por lo tanto 'aun' no se guardo) para Access no existe y no lo podrá tener en cuenta, por lo que el mayor de ese conjunto (posiblemente filtrado por cliente) lo normal es que sea el ultimo.

De cualquier forma la lógica dice que 'el anterior al actual' será el mayor de los que sean menores que el (y no es un trabalenguas).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 21/08/2021 02:42:54
Es que a través de consultas no me doy cuenta de cómo hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 21/08/2021 11:43:44
¿En una consulta? .....

Teorizando (por absoluto desconocimiento del entorno real):

En un conjunto de datos de ventas, se necesita conocer (para el registro actual de venta a un cliente) cual es la fecha de su ultima compra.

La consulta precisaría de dos campos de la tabla:
.- el indicador de cliente
.- la fecha de las compras.

Bajo el indicador de cliente, el cliente (referencia que se puede tomar del formulario de venta)
Bajo la fecha se le indica que se desea el mayor (se supone que es una consulta de datos agrupados) y como condición ... que la fecha sea menor que la fecha actual.

Para obtener el dato y poder utilizarlo en el formulario se puede utilizar una función tal como DLookup (que tomara el supuesto único dato que devuelve):
De ese cliente: la mayor de las fechas inferiores a la actual

Si existe mas de una tendrán que ser iguales y si hay ventas con fechas mayores a la actual ... me plantearía hacer una auditoria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 21/08/2021 14:10:37
Buenoa días, voy a trabajar en eso y le comento, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 23/08/2021 19:19:18
Hola he estado liado con otras cosas y no habia posido escribirle.

No creo que la solucion que he logrado sea la mejor y de hecho no funciona del todo, pero bueno voy caminando.
Mire realice la consulta donde selecciono para un cliente en particular la fecha min del los pedidos, asi ya se cual fue el ultimo pedido realizado.

1. En el form principal puse un subform a partir de la consulta.
2. cree un cuadro de texto donde saco la dif de fechas entre la fecha del pedido nuevo y la fecha ultima de la consulta

esto me da el numero de dias y si es menor que 7 que es la semana, acepto o no el pedido.
hasta aqui funciona de maravilla, PERO, lo estaba provando con registros de pedidos existentes, osea, cuando llego a un cliente que no tiene pedidos, me da un error, pues la consulta no da resultado ninguno pues no ha habido pedidos y al restar la fecha del dias que estoy realizando el nuevo pedido con el resultado de la consulta (que no existe), por supuesto me da error de #Type#.

he intentado poner un IF en el cuadro texto para que si el campo del subform donde esta la ultima fecha que realizo pedidos sea NULL lo lleve a 0 pero nada.

me ha costado trabajo explicarte esto es complicado hacerse entender, no se si lo lograras, entenderme. disculpa de antemano

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 23/08/2021 22:33:20
Con la función FORMAT o la función DATEPART se obtiene el numero de semana actual (de una fecha cualquiera, pero en tiempo real interesa la semana actual).

Otra cosa es que la condición no sea 'un pedido por semana', sino 'un pedido con mínimo siete días de diferencia'.

La metodología a aplicar será diferente.

Es indispensable aclarar las condiciones que se han de cumplir para poder obtener resultados veraces.

Una función que puede ser muy util cuando una de la probabilidades es que sea un NULL, consiste en utilizar la función 'NZ'

Nz([dato a evaluar], valor si es NULL)

Para un control llamado 'Resultado' , en el caso A es un valor en el rango, en el caso B es un NULL

A---- MsgBox Nz([resultado], 0) ===> resultado
B---- MsgBox Nz([resultado], 0) ===> 0

No tiene que ser 'cero' puede ser cualquier cosa, incluso un texto:
B---- MsgBox Nz([resultado], "Sin datos") ===> Sin datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado su posición en 45 puestos en Access (en relación al último mes)
Gráfica de Access

controlar cantidad de envios por semana

Publicado por anselmo (22 intervenciones) el 24/08/2021 18:22:56
Hola

Al fin lo solucione, despues de tanto y ahora lo veo tan sencillo.

En el form cree un campo text, vacio (CText63) y otro que me calcule la diferancia entre la fecha actual y esta ultima ( CText65)
Desde el subform en el campo de activar el nuevo pedido en AfterUpdate, le puse:

If Me.NewRecord The
Forms.FPedidos.CText63= DLast("Fecha"," TPedidos")
If Forms.FPedidos.CText65.value<7 Then
If MsgBox" Atencion: Revise, existe un pedido realizado hace solo" & Forms.FPedidos.CText65 & "dias. Deseaconfirmar el pedido?", VbYesNo) = Yes Then
Else
Me.undo
End If
Else
End If
End If
End Sub
Yo se que se puede hacer mejor, pero al menos me haz ayudado a pensar y llegar a una solucion.

gracias por tu tiempo y si crees que pueda mejorarlo te lo agradezco

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

controlar cantidad de envios por semana

Publicado por Anonimo (3316 intervenciones) el 24/08/2021 20:02:07
Es mas fiel pedir la fecha mas alta (DMax) que la ultima fecha.(DLast)

Generalmente van síncronas, pero DLast localiza la ultima introducida tomando como referencia el orden de introducción, DMax dará la mayor (a la que se supone la ultima) independiente del orden de entrada o de cualquier otro orden que se le aplique.

No se necesitan campos independientes, Access puede calcular sin ellos

Tenemos una fecha, la del pedido y se puede obtener la ultima (o la mayor), se las resta y el resultado es valido como condición:

1
IF Date - DLast("Fecha"," TPedidos") < 7 Then ........


Solo me llama la atención que no se utilice como parte de la condición el destinatario del pedido.
Hace suponer que solo hay un cliente o solo se prepara un único pedido por semana (y se le otorga al primero que llegue o al primero de la lista).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar