Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.
Usace, solo opinion


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -
Ayuda al foro con tu donación
Foros en Udias.com / FileMaker / Suma condicional para Prevision de stock
Autor Mensaje

Miembro

Ocasional

  Karma     17

#1 Publicado: 14 Feb 2014 12:31



Buenas,

Me he encasquillado con un calculo que necesito y estado buscando en el foro pero no encuentro solucion.

Tambien es verdad que soy novato y quizas se me este escapando algo fundamental.

El problema que quiero resolver es el siguiente.

Tengo una tabla se llama PROYECTOS.PEDIDOS con los campos:

id_proyecto
id_producto
unidades
fecha.necesidad


Y en la tabla PRODUCTOS, además de otros campos, los que vienen al cuento:

id_producto
stock.hoy
stock.prevision


Lo que quiero hacer, es saber qué stock tendré por ejemplo mañana, sumando las unidades que me piden desde PROYECTOS.PEDIDOS, en función de la fecha.necesidad

para ello defino el campo stock.prevision de la siguiente manera:

stock.hoy - If ( PROYECTOS.PEDIDOS::fecha.necesidad = Date ( Month ( Get( CurrentDate ) ) ; Day ( Get( CurrentDate ) ) +1 ; Year ( Get( CurrentDate ) ) ) ; Sum(PROYECTOS.PEDIDOS::unidades) ; 0 )


El problema es que me suma TODAS las unidades de la tabla PROYECTOS.PEDIDOS relacionadas con id_producto, independientemente de la fecha.necesidad; es decir, si tengo dos pedidos para un mismo producto en la tabla PROYECTOS.PEDIDOS con diferente fecha, por ejemplo 3 para mañana y 4 para pasado, lo que hace es detecta que hay fecha de mañana, pero me resta 7 del stock.hoy en lugar de 3.

He probado también a quitar la función Sum(), pero ntonces lo que hace es coger las unidades del primer registro que encuentra en la tabla PROYECTOS.PEDIDOS con fecha de mañana.

A ver si me podeis echar una mano, gracias y un saludo.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Ocasional

  Karma     17

#2 Publicado: 14 Feb 2014 14:10 - Editado por: zio



Lo estoy intentando mediante una consulta SQL pero tampoco funciona:

Let ( Unidades_Pedidas = ExecuteSQL ( "SELECT SUM ( unidades ) FROM PROYECTOS.PEDIDOS WHERE fecha.necesidad = Date ( Month ( Get( CurrentDate ) ) ; Day ( Get( CurrentDate ) ) +1; Year ( Get( CurrentDate ) ) " ; "" ; "" ); stock.hoy - Unidades_Pedidas)


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador

Adicto

  Karma             1030

#3 Publicado: 15 Feb 2014 10:01



Puede ser que el problema esté en los formatos de fecha. Prueba creando un campo de cálculo con resultado texto en PROYECTOS.PEDIDOS, llamado fecha.necesidadSQL con la fórmula:

Year(fecha.necesidad) & "-" & Right("0" & Month(fecha.necesidad);2) & "-" & Right("0" & Day(fecha.necesidad);2)

Ahora el cálculo sería:

Let ([
Fecha=Get(CurrentDate) +1;
FechaSQL=Year(Fecha) & "-" & Right("0" & Month(Fecha);2) & "-" & Right("0" & Day(Fecha);2);
Unidades_Pedidas = ExecuteSQL ( "SELECT SUM ( unidades ) FROM PROYECTOS.PEDIDOS WHERE fecha.necesidadSQL =?" ; "" ; "";FechaSQL )];

stock.hoy - Unidades_Pedidas)

Prueba a ver si así funciona


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 8 y Filemaker 11

Miembro

Ocasional

  Karma     17

#4 Publicado: 17 Feb 2014 08:29



Hola JotaEme,

He probado pero no me funciona.

El resultado me da = ?

Aparte dandole vueltas, he pensado que aunque funcionara al hacer la consulta SQL ¿no me daría la suma total de unidades sin discriminar por producto?, o ¿Filemaker automaticamente me lo discrimina?

Estoy bastante confuso.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Ocasional

  Karma     17

#5 Publicado: 17 Feb 2014 11:42



Llevo dandole vueltas media mañana a la puñetera función y nada.
Es SUPER-FRUSTRANTE que algo tan sencillo no haya manera de sacarlo adelante.

De todas formas, he detectado una cosa:

A ExecuteSQL(), no le gustan las tablas que contienen un PUNTO en el nombre; es decir PROYECTOS.PEDIDOS no le gusta ni un pelo, de hecho pasa de la tabla olimpicamente, en cambio PROYECTOS_PEDIDOS si que la trabaja.

Sigo intentandolo!


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador

Adicto

  Karma             1030

#6 Publicado: 17 Feb 2014 15:01



Para evitar problemas con los puntos en los nombres, prueba metiendo esos nombres entre \", por ejemplo:

\"PROYECTOS.PEDIDOS\"
\"fecha.necesidadSQL\"


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 8 y Filemaker 11

Miembro

Ocasional

  Karma     17

#7 Publicado: 18 Feb 2014 12:33



Muchas gracias JotaEme,

De todas formas mi gran problema es sacar la formula para reunir las unidades de producto que se solicitan cada dia.

Haciendo la consulta SQL, que por cierto no me funciona, aunque funcionara no veo cómo discriminar por producto y día.

De momento lo que se aproxima a esto sería:

stock.hoy - If ( PROYECTOS.PEDIDOS::fecha.necesidad = Get (CurrentDate)+1 ; PROYECTOS.PEDIDOS::unidades); 0 )

que me coge el primer registro (según orden de filemaker) que exista del producto relacionado, si bien coincide con la fecha de hoy +1

o bien esta otra, que hace lo mismo pero me suma todas las unidades que existan de ese producto independientemente del día (al día = hoy+1 en este ejemplo):

stock.hoy - If ( PROYECTOS.PEDIDOS::fecha.necesidad = Get (CurrentDate)+1 ; Sum(PROYECTOS.PEDIDOS::unidades); 0 ))

El tema es que tengo varios calculos con esa formula que serían

stock.1D = stock.hoy - If ( PROYECTOS.PEDIDOS::fecha.necesidad = Get (CurrentDate)+1 ; Sum(PROYECTOS.PEDIDOS::unidades); 0 ))

stock.2D = stock.hoy - If ( PROYECTOS.PEDIDOS::fecha.necesidad = Get (CurrentDate)+2 ; Sum(PROYECTOS.PEDIDOS::unidades); 0 ))

etc...

pero lo que SI me lo relaciona con el producto, pero me hace el cálculo sólo para la fecha establecida en el primer registro que encuentra en la tabla (según el orden interno de filemaker)

No sé si me explico bien.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador

Adicto

  Karma             1030

#8 Publicado: 18 Feb 2014 22:34



A ver si esto te sirve.
En la fórmula de stock.1D y stock.2D en vez de usar el signo = he puesto el signo <= pensando que el cálculo sería acumulativo (dentro de dos días hay que quitarle al stock de hoy las unidades pedidas dentro de 1 y 2 días). Si no es así, solo hay que cambiarlo.

Ejemplo.rarArchivo adjunto: Ejemplo.rar
 

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 8 y Filemaker 11

Miembro

Ocasional

  Karma     17

#9 Publicado: 19 Feb 2014 09:28



Muchisimas gracias JotaEme,

De todas formas lo he planteado de otra manera:

No uso para nada SQL, lo que he hecho es crear tablas para cada día que se calcula el stock.

Defino 5 nuevas tablas STOCK.1D, STOCK.2D, STOCK.3D, STOCK.1S, STOCK.2S.

en todas meto el campo id_producto, fecha.{XX} y stock.{XX}

fecha.{XX} = Get (CurrentDate) + "X", siendo "X" = el diferencial de días.
stock.{XX} = Sum(PROYECTOS.PEDIDOS::unidades)

Las tablas STOCK.1D, STOCK.2D, y STOCK.3D, las relaciono con PROYECTOS.PEDIDOS así:

PROYECTOS.PEDIDOS::fecha necesidad = STOCK.1D::fecha.1D
PROYECTOS.PEDIDOS::fecha necesidad = STOCK.1D::fecha.2D
PROYECTOS.PEDIDOS::fecha necesidad = STOCK.1D::fecha.3D

PROYECTOS.PEDIDOS::id_producto = STOCK.1D::id_producto
PROYECTOS.PEDIDOS::id_producto = STOCK.2D::id_producto
PROYECTOS.PEDIDOS::id_producto = STOCK.3D::id_producto

y STOCK.1S y STOCK.2S así:

PROYECTOS.PEDIDOS::fecha necesidad >= STOCK.1S::fecha.1S_min
PROYECTOS.PEDIDOS::fecha necesidad <= STOCK.1S::fecha.1S_max

PROYECTOS.PEDIDOS::fecha necesidad >= STOCK.2S::fecha.2S_min
PROYECTOS.PEDIDOS::fecha necesidad <= STOCK.2S::fecha.2S_max


PROYECTOS.PEDIDOS::id_producto = STOCK.1S::id_producto
PROYECTOS.PEDIDOS::id_producto = STOCK.2S::id_producto

Luego en la tabla PRODUCTOS, defino:

stock.1D= stock.hoy - STOCK.1D::stock.1D
stock.1D= stock.hoy - STOCK.1D::stock.1D - STOCK.2D::stock2D
........
stock.2S= stock.hoy - STOCK.1D::stock.1D - STOCK.2D::stock.2D - STOCK.3D::stock.3D - STOCK.1S::stock.1S - STOCK.2S::stock.2S

Importante para esto último indexar los cálculos de los campos stock.{XX} de las tablas STOCK.{XX}

El único problema ahora es que en las tablas STOCK.{XX} aparezcan todos los id_productos, para que se relacione con PROYECTOS.PEDIDOS.

Lo soluciono mediante un script que cargo on_load en la presentación de PRODUCTOS (donde me aparece el stock.hoy y los sucesivos stocks (1D, 2D, 3D,...)). El script simplemente lo que hace es alimentar las tablas STOCK.{XX} con los id_productos de PRODUCTOS, mediante la funcion "Importar registros".

Y Tachaaaann!


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Ocasional

  Karma   1

#10 Publicado: 12 Feb 2018 16:03



Hola a todos
alguien me puede ayudar por favor, necesito que al hacer un préstamo como en el ejemplo que esta arriba, automáticamente se agregue hasta la fecha que le asigne de préstamo al stock


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
tomas ortega
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Suma condicional para Prevision de stock

Suma condicional
suma condicional
Problemas suma condicional de BD relaccionada
Filtrar contenido de portal a través de palabra clave en otro campo para control de stock
Ayuda para formato condicional


Conectados: Invitados - 9
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2018
Para Udias.com © 1996-2018
Hosting con Interdominios