Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/07/2011, 14:35
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 1 mes
Puntos: 447
Respuesta: informe entradas y salidas

Hola lordcortes:

En lo particular, cuando se trata de reportes de entradas salidas nunca manejo fechas, sino consolidados, es decir sumando las entradas y salidas para obtener el total de existencias para una fecha determinada... más no sé si esto te sirva, en estos momentos no tengo modo de probar con ACCESS, pero te dejo el ejemplo de más o menos lo que hago son SQL Server, la sintaxis sería muy parecida y creo que se puede entender:

Código SQL:
Ver original
  1. DECLARE @Entradas TABLE (fecha datetime, producto VARCHAR(15), cantidad INT)
  2. INSERT INTO @Entradas VALUES ('2011-07-25', 'TRICLOSAN', 10)   
  3. INSERT INTO @Entradas VALUES ('2011-07-27', 'TRICLOSAN', 5)
  4. INSERT INTO @Entradas VALUES ('2011-07-29', 'TRICLOSAN', 15)
  5. INSERT INTO @Entradas VALUES ('2011-07-26', 'OTRO', 10)
  6. INSERT INTO @Entradas VALUES ('2011-07-27', 'OTRO', 1)
  7. INSERT INTO @Entradas VALUES ('2011-07-28', 'OTRO', 4)
  8. INSERT INTO @Entradas VALUES ('2011-07-28', 'UNO MÁS', 10)
  9.  
  10. SELECT * FROM @Entradas
  11.  
  12. /*
  13. fecha                   producto        cantidad
  14. ----------------------- --------------- -----------
  15. 2011-07-25 00:00:00.000 TRICLOSAN       10
  16. 2011-07-27 00:00:00.000 TRICLOSAN       5
  17. 2011-07-29 00:00:00.000 TRICLOSAN       15
  18. 2011-07-26 00:00:00.000 OTRO            10
  19. 2011-07-27 00:00:00.000 OTRO            1
  20. 2011-07-28 00:00:00.000 OTRO            4
  21. 2011-07-28 00:00:00.000 UNO MÁS         10
  22. */
  23.  
  24. DECLARE @Salidas TABLE (fecha datetime, producto VARCHAR(15), cantidad INT)
  25. INSERT INTO @Salidas VALUES ('2011-07-26', 'TRICLOSAN', 7) 
  26. INSERT INTO @Salidas VALUES ('2011-07-27', 'TRICLOSAN', 3)
  27. INSERT INTO @Salidas VALUES ('2011-07-27', 'OTRO', 8)  
  28. INSERT INTO @Salidas VALUES ('2011-07-30', 'OTRO', 7)
  29.  
  30. SELECT * FROM @Salidas
  31.  
  32. /*
  33. fecha                   producto        cantidad
  34. ----------------------- --------------- -----------
  35. 2011-07-26 00:00:00.000 TRICLOSAN       7
  36. 2011-07-27 00:00:00.000 TRICLOSAN       3
  37. 2011-07-27 00:00:00.000 OTRO            8
  38. 2011-07-30 00:00:00.000 OTRO            7
  39. */
  40.  
  41. SELECT
  42. T1.producto,
  43. T1.total_entradas,
  44. isnull(T2.total_salidas, 0) total_salidas,
  45. T1.total_entradas - isnull(T2.total_salidas, 0) existencia
  46. FROM
  47. (SELECT E.producto, SUM(E.cantidad) total_entradas FROM @Entradas E GROUP BY E.producto) T1
  48. LEFT JOIN
  49. (SELECT S.producto, SUM(S.cantidad) total_salidas FROM @Salidas S GROUP BY S.producto) T2
  50. ON T1.producto = T2.producto
  51.  
  52. /*
  53. producto        total_entradas total_salidas existencia
  54. --------------- -------------- ------------- -----------
  55. TRICLOSAN       30             10            20
  56. OTRO            15             15            0
  57. UNO MÁS         10             0             10
  58. */

Es decir, toma cada tabla por separado y hace subconsultas agrupando por producto para obtener los totales, esos subconsultas son utilizados en una consulta "externa" para obtener las existencias por productos. observa que la fecha no es utilizada en ningún momento, y no importa si por ejemplo en un día no hubo sólo entradas, sólo salidas o entradas y salidas.

No sé si esto sea más o menos lo que necesites, sino habría que revisar tu lógica de negocios, para revisar los criterios de elaboración del reporte.

Dale un vistazo y nos comentas:

Saludos
Leo