Buenas, estoy empezando en esto de appsheet, he tenido muchas buenas experiencias buscando respuestas a mis dudas aquí, así que les comparto mi problema. He realizado un app basica para pedidos, todo va bien. Utilice un boot para que me sume el total de pedidos de un mismo producto, para saber cuantas unidades de ese producto debo sacar del almacen para realizar los pedidos. Ejemplo: si un cliente me pide 2 Coca Colas, y otro me pide 5, ese boot me suma que debo sacar del almacen 7 Coca Colas. Lo malo es que a veces el boot no funciona como deberia y tengo que realizar el conteo o la sumatoria con formulas de excel ya que tengo acceso a la base de datos. Ahora estoy queriendo realizar el mismo conteo pero utilizando una columna virtual en mi tabla de ventas. He logrado que me sume las unidades, pero en la Vista me repite los articulos. Usando lo del ejemplo anterior, en lugar de mostrarme Coca Colas = 7, me muestra Coca Colas 7 y en otra fila Coca Colas 7, es decir que de cada venta o pedido que realizo crea otra fila aunque sea del mismo producto.
SUM(SELECT(ventas[uds],[item]=[_THISROW].[item]))
Esa es la formula que estoy usando para realizar las sumas. Si alguien pudiese darme una mano con eso, no estoy seguro si es la formula o el problema es en la vista. Intente contatenando las columnas de las unidades y del producto, pero el resultado ha sido el mismo.
Gracias de antemano por su ayuda.
Solved! Go to Solution.
Te pido disculpas por no responderte como te mereces Hector pero es que no he tenido tiempo alguno. de todos modos quizás las ideas sirvan aunque sea para el caso.
Si lo que necesitas es una vista consolidada donde cada producto solo aparezca una vez con el total de unidades vendidas, lo mejor es usar una tabla de resumen. Si solo necesitas el total en la tabla “Productos”, puedes usar la lista de ventas relacionadas con SUM([Related Ventas][uds]) en una virtual column. Probaste esto?
o un
SUM(SELECT([Related Ventas][uds],[item] = [_thisrow].[item]))
por ejemplo
Crea un slice llamado resumen_solicitudes por ejemplo
como fórmula del slice usa:
[ID] = MINROW("ventas", "_ROWNUMBER", [item] = [_THISROW].[item])
Esto creará una "tabla filtrada" con todos los registros de igual item pero solamente teniendo en cuenta aquel que tenga el rownumber mínimo. Por ejemplo, si tienes 100 filas con coca cola, tomará solo una. la mínima. Esto te sirve para tener una lista única por ejemplo.
Despues creas una vista de tabla basada en el slice creado y le agregas 2 columnas; la coumna del item que quieres y la columna virtual de suma que creaste.
Esto mostrara coca cola una sola vez pero en la cantidad mostrara la suma.
Espero que te sirva.
Lo que no veo es que le digas del ID, solo le dices que sume, pero necesitas declarar el ID,
Si gustas deja tu estructura de la tabla para tene una mejor idea
Ejemplo en una virtual desde otra tabla refrenciada por el campo [ordenEncabezadoID puedo sumar todos del mismo ID, sin importar cuantos registros hayan en la tabla
SUM(SELECT(OrdenDetalle[SubTotal], [OrdenEncabezadoID] = [_THISROW].[OrdenEncabezadoID]))
Si puedes explica mejor tu necesidad mañana estaré muy complicado. Si lo puedo ver lo haré. Estoy trabajando sobre un proyecto para la comunidad que me está tomando mucho tiempo y recursos.
Pero voy a decir algo que quizás te ayude al respecto.
Te estoy sugiriendo que crees un slice. Imagino que ya sabes lo que es. La idea es que se filtren registros. Cuáles? Bueno aquellos que sean de un tipo (por ejemplo coca cola) pero se filtren una sola vez. Pero si esa opción no te agrada puedes usar UNIQUE(list)
UNIQUE va a devolverte elementos únicos de una lista que cumple con alguna condición.
SUM(UNIQUE(SELECT(ventas[uds],[item]=[_THISROW].[item])))
no estoy en casa y no lo probé pero bueno para que vayas viendo algo
Gracias a todos por sus respuestas. Para que puedan comprender mejor mi solicitud esta es la estructura de mi tabla "Ventas":
La columna Item la toma de la Tabla "Productos". Lo que necesito es que me sume el total de unidades vendidas del mismo producto.
Ya hice la prueba creando el Slice y con una columna virtual. Pero sigo obteniendo el mismo resultado.
Espero que con la estructura de la tabla pueda entenderse mejor mi solicitud.
Si de algo sirve les comparto que para hacerlo ahora estoy usando un boot, para que funcione tuve que crear otra tabla que se relaciona con la tabla ventas, y creando una acción que sume los productos que coincidan con la fecha y el item es que puedo hacerlo; pero extrañamente algunas veces falla y deja de sumar.
Les muestro lo que me hace el boot: En la captura pueden ver el pedido 100 y 101, dos pedidos del mismo producto que suman 12 unidades.
Lo que hace el boot es darme el total de las unidades vendidas o pedidas de ese producto
Gracias por tomarse su tiempo para responderme.
Si estas en tu tabla de ventas intenta en app formula en una columna virtual, ejemplo TotalUdsVendidas y le colocas esta formula
SUM(SELECT(Ventas[uds], [iditem] = [_THISROW].[iditem]))
Si lo quieres en la tabla productos, el mismo caso, con una virtual en App formula
SUM(SELECT(Ventas[uds], [iditem] = [_THISROW].[ID]))
Verifica la ref si estan, me cuentas haber quetal
Gracias por responder, hice lo que sugieres y si me suma los productos, pero suma el tomando en cuenta los pedidos de los días anteriores. En la tabla ventas tengo la columna de fecha, en la tabla articulos no.
Bueno es que como nunca mencionó si lo necesitaba por fecha, sin embargo si lo necesita por dia, revise
en ventas
Ventas de hoy
SUM(SELECT(Ventas[uds],
AND([iditem] = [_THISROW].[iditem],
[fecha] = TODAY())
))
Ultimos 7 dias
SUM(SELECT(Ventas[uds],
AND([iditem] = [_THISROW].[iditem],
[fecha] >= TODAY() - 7)
))
en productos
Ventas de hoy
SUM(SELECT(Ventas[uds],
AND([iditem] = [_THISROW].[ID],
[fecha] = TODAY())
))
Ultimos 7 dias
SUM(SELECT(Ventas[uds],
AND([iditem] = [_THISROW].[ID],
[fecha] >= TODAY() - 7)
))
Que tal, gracias por responder y mil disculpas por no haber mencionado antes lo de agruparlos por fecha. Intente tu sugerencia y todo bien, pero sigo teniendo el problema de la duplicidad del registro.
Como se puede apreciar en la imagen, hice dos ventas de ese producto, primero una de 1000 y luego otra de 10. Al principio me mostró la de 1000, todo perfecto, pero al añadir las otras 10, muestras dos registros de 1010.
Gracias por tomarte tu tiempo para responder, siento que ya casi lo logramos.
Si, eso es normal, porque le esta sumando todos los de la misma fecha mimo producto, si quiere por venta, o mejor dicho por factura cambie o mejor agregue otra linea abjo de la fecha del ite padre, ejemplo
SUM(SELECT(Ventas[uds],
AND([iditem] = [_THISROW].[iditem],
[fecha] = [_THISROW].[fecha],
[ID] = [_THISROW].[ID])
))
Biendolo bien, creo que no le va funciona con el ID padre, quizas deba agregar un campo ref de la otra tabla, generarlemnete las ventas tiene dos tablas, una que actua como encabezado y la otra como detalle, encabezado un solo registro y detalle muchos registros para ese mismo encabazado
no comprendo como tiene alli las tablas o que quiere lograr, es decir solo sumar, pero donde
si tiene dos tablas
tabla encabezado:
id_encabezado key
id_cliente
direccion
fecha
total (podria ser una virtual)
tabla detalle:
id_detalle key
id_encabezado con ref a encabezado y marcar Is a part of?
id_productos
cantidad
precio
total
y en el total del encabezado puede sumar con las formulas que le mencione antes
Muchas gracias por la respuesta. La pondré en práctica cuando este en casa y aviso como me fue.
Te pido disculpas por no responderte como te mereces Hector pero es que no he tenido tiempo alguno. de todos modos quizás las ideas sirvan aunque sea para el caso.
Si lo que necesitas es una vista consolidada donde cada producto solo aparezca una vez con el total de unidades vendidas, lo mejor es usar una tabla de resumen. Si solo necesitas el total en la tabla “Productos”, puedes usar la lista de ventas relacionadas con SUM([Related Ventas][uds]) en una virtual column. Probaste esto?
o un
SUM(SELECT([Related Ventas][uds],[item] = [_thisrow].[item]))
por ejemplo
Tengo una tabla resumen que es la que el boot usa para la sumatoria. Tal vez podria hacer lo de la formula en esa tabla: porque cuando hago en la tabla Productos donde esta [Related Ventas] al no existir la columna fecha, me suma los productos pero no los puedo agrupar por fecha
Ese sería el único porblema. Intentaré más tarde hacer lo de la formula en la tabla resumen para ver si funciona mejor que el Boot.
Muchas gracias por responder.
Muchas gracias a todos por sus respuestas, al final lo que resulto fue crear un slice y aplicar la formula SUM(SELECT([Related Ventas][uds],[item] = [_thisrow].[nombre])) pero en la tabla productos, no en la de ventas, porque cuando lo hacia en la de ventas, siempre se duplicaba, aunque utilizara el id o iditem, tenia el mismo resultado.
Ahora funciona correctamente, sin necesidad del boot. Tambien note que el boot no funcionaba porque la aplicación no se "refrescaba" correctamente, lo que hacia que, si bien se registraban los pedidos, no se sumaban a las ventas. Es algo extraño, pero eso fue lo que note. Por ahora la solución implementada esta funcionando bien.
Una vez más gracias a todos por tomarse el tiempo para responder y por toda su paciencia con alguien que recien empieza en Appsheet.
User | Count |
---|---|
16 | |
12 | |
5 | |
5 | |
5 |