Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda en consulta para sacar kardex (https://www.clubdelphi.com/foros/showthread.php?t=62766)

Rom@n 13-01-2009 17:31:21

Ayuda en consulta para sacar kardex
 
saludos a todos los expertos del club delphi

estoy haciendo un sistema en delphi7 y access, en el cual ocupo sacar un reporte de kardex o movimientos de un producto en especial y de un almacen en especial, todo esto con un rango de fechas, fecha inicial y fecha final.

la tabla de consulta debe tener un aspecto como el siguiente en un dbgrid:

Fecha |compras |Ajustes_Inventario |Traspasos |Nota_Credito |Ventas
-----------------------------------------------------------------------
01/12/09 | 15 | 0 | 8 | 0 | 50
01/13/09 | 15 | 0 | 0 | 5 | 35
01/30/09 | 0 | 25 | 0 | 0 | 40

las tablas que tienen la informacion son:
tab_movimientos detalle_venta
---------------- --------------
id_det_mov id_det_ven
id_almacen id_almacen
tipo_mov folio_venta
fecha fecha
id_producto id_producto
cantidad cantidad


gracias desde ya espero haber sido claro muchas gracias y hasta pronto

brandolin 13-01-2009 17:45:01

La verdad que mucho no se entiende de donde sacas la informacion, pero aparentemente lo que necesitas es hacer un pasaje de filas a columnas ¿¿??

Yo hice algo similar con la siguiente consulta, espero te sirva
Código SQL [-]
select 
   a1.cod_clasificacion, 
   c1.nombre_clasif,
   SUM(CASE cc.tipo_comp WHEN 1 THEN cd.costo_total ELSE 0 END) AS compras, 
   SUM(CASE cc.tipo_comp WHEN 2 THEN cd.costo_total ELSE 0 END) AS ventas, 
   SUM(CASE cc.tipo_comp WHEN 3 THEN cd.costo_total ELSE 0 END) AS transferencias, 
   SUM(CASE cc.tipo_comp WHEN 5 THEN cd.costo_total ELSE 0 END) AS devoluciones, 
   SUM(CASE cc.tipo_comp WHEN 6 THEN cd.costo_total ELSE 0 END) AS destruccion
   from comp_mov_deposito_cab cc 
   inner join comp_mov_deposito_det cd on   cc.num_comp_armado = cd.num_comp_armado 
  inner join articulos a1 on cd.cod_articulo=a1.cod_articulo
  inner join clasificaciones c1 on a1.cod_clasificacion = c1.cod_clasificacion
  group by a1.cod_clasificacion, c1.nombre_clasif;

Si no se entiende la idea puedo simplificarla un poco, pero el secreto esta en el uso del CASE segun el tipo de Comprobante (en mi caso) de movimiento en el tuyo.

Suerte.

BlueSteel 13-01-2009 17:48:29

Hola

y la consulta cual es ??? será como realizar la sentencia sql adecuada ???

indicastes 2 tablas y varios campos ??? cuales corresponden a cada tabla ??

creo que debes probar con una consulta similar a la siguiente... claro esta con tus propios campos y tablas... quizas cuando declares la fecha tengas algun problema pero dependera del formato
Código SQL [-]
Select campos
FROM  tabla1, tabla2
Where Fecha Between :=Fecha1 And :=Fecha2
And Campoa.Tabla1 = Campob.Tabla2

salu2:p:D

Rom@n 17-01-2009 19:26:01

mi solucion del problema del kardex
 
hola muchas gracias por tu respuesta, es muy parecida a la consulta que
necesito aunque en acces el case no funciona, pero puedo usar el iff que funciona
perfectamente igual, y la unica diferencia de tu consulta y la mia
esque los detalles de ventas los tengo en tablas diferentes y no en la misma
tabla de movimienos por lo que estoy tratando de solucionar mi problema
uniendo estas tablas con la funcion UNION.


SELECT *
FROM (select c.fecha,c.id_almacen,dm.id_producto,dm.cantidad,dm.tipo_mov
from tab_compra c inner join tab_detalle_movimientos dm on(c.id_compra=dm.folio)
UNION select v.fecha,v.id_almacen,dv.id_producto,dv.cantidad,dv.tipo_mov
from tab_detalle_pago_venta v inner join tab_detalle_venta dv on(v.id_venta=dv.id_venta)) AS movimientos


con el resulrado de esta consulta hago otra consulta, y listo



select fecha as Fecha,
Sum(IIf(tipo_mov=1,cantidad,0)) AS [Ajustes/Inv],
Sum(IIf(tipo_mov=2,cantidad,0)) AS Traspasos,
Sum(IIf(tipo_mov=3,cantidad,0)) AS Compras,
Sum(IIf(tipo_mov=4,cantidad,0)) AS [Nota/Credito],
Sum(IIf(tipo_mov=5,cantidad,0)) AS Ventas
from sql_kardex_union
where fecha>=:fi and fecha<=:ff and id_almacen=:id_alma
and id_producto=:id_prod
group by id_producto,fecha
order by fecha


La franja horaria es GMT +2. Ahora son las 06:26:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi