Calculo con registro anterior

De nuevo telemaco, se me complica la cosa no consigo realizar un calculo con el registro anterior me explico :
campos fecha,compra,venta y stock es el campo q falta crear q seria = a stock de la fecha anterior+compras-ventas.me vale igual en la consulta o un informe perono logro calcularlo
te pego la consulta y ...gracias otra vez
SELECT ConsultaLecturas.FECHA, ConsultaLecturas.CONCEPTO, Sum(ConsultaLecturas.CONSUMO) AS SumaDeCONSUMO, IIf([stock]![CANTIDAD]>0,[stock]![CANTIDAD],0) AS COMPRA
FROM ConsultaLecturas LEFT JOIN stock ON (ConsultaLecturas.FECHA = stock.FECHA) AND (ConsultaLecturas.CONCEPTO = stock.CONCEPTO)
GROUP BY ConsultaLecturas.FECHA, ConsultaLecturas.CONCEPTO, IIf([stock]![CANTIDAD]>0,[stock]![CANTIDAD],0)
HAVING (((ConsultaLecturas.FECHA)>#12/31/2005#))
ORDER BY ConsultaLecturas.CONCEPTO;

1 respuesta

Respuesta
1
El problema veo yo, es que la fecha NO DEBE SER AGRUPADA, por te hará la consulta día por día, en vez de agruparla colocaque la condición "Donde" (Si quieres ayudate de un objeto consulta, pégala en una consulta)... ahora si lo hiciste así, en vez de la que la fecha quede Group By, colócale Donde, así NO LA TIENE EN CUANTA PARA AGRUPAR sino para filtrar, cuando haces esto la casilla chequeada, queda deschequeada...
Ahora sino quieres utilizar un aconsuklta de ayuda, debes quitar FECHA del group By, y la condición por HAVING copiarla (sin HAVING lógicamente) y colocalar después ddel from como WHERE... osea quedaría así más o menos...
SELECT ConsultaLecturas.FECHA, ConsultaLecturas.CONCEPTO, Sum(ConsultaLecturas.CONSUMO) AS SumaDeCONSUMO, IIf([stock]![CANTIDAD]>0,[stock]![CANTIDAD],0) AS COMPRA
FROM ConsultaLecturas LEFT JOIN stock ON (ConsultaLecturas.FECHA = stock.FECHA) AND (ConsultaLecturas.CONCEPTO = stock.CONCEPTO) WHERE (((ConsultaLecturas.FECHA)>#12/31/2005#))
GROUP BY ConsultaLecturas.CONCEPTO, IIf([stock]![CANTIDAD]>0,[stock]![CANTIDAD],0)
ORDER BY ConsultaLecturas.CONCEPTO;
Ahora debes mirar lo de la fecha, porque aquí le dice que filtre SI LA FECHA ES MAYOR A LA QUE COLOCO, mira haber si de pronto utilizas Between osea :
WHERE (((ConsultaLecturas.FECHA)Between #12/31/2005# y #01/012006#))
O por un igual si es una fecha especifica...
En pocas palabras cuando realizar una función de agregado como suma (sum), y agrupas acuérdate que le estas dicindo que suma PERO AGRUPANDO POR EL CONCEPTO y por la función (iif) que colocaste, sino te da la suma es por esto...
Att:telemaco
uff a ver .. la fecha #12/31/2005# esta en criterios porque si no me saldría desde el año 2000 y esto empezaría hacerlo el día 1 enero 2006 y tiene que estar agrupado por día y por concepto por si sirve de algo te diré que son tanques combustible un programa me envía las ventas y yo tengo que calcular día a día la diferencia entre lo que queda en el tanque (real) y el teórico(real día anterior del mismo concepto +compras-ventas)
Espero sirva pa orientarte algo ya sabes que yo de programación muy poco pero aprendo Between no tengo ni idea que es pero lo buscare ;)
Gracias
Bueno pero dime, ya entendí cual es el problema...
Pero hay que trabajar con el formulario y programación, la idea es la siguiente, puedes buscar el dato con esto:
ValAnt = Nz(DLookup("CANTIDAD","CONSULTASLECTURAS","FECHA > #12/31/2005# AND CONCEPTO='El concepto de filtrar'"))
Ojo: La función Nz devuelve CERO si el dato entre los paréntesis es cero, ahora la función DLookup "Busca" un dato, en este caso el valor del campo CANTIDAD de la tabla CONSULTASLECTURAS, la ultima parte es la condición, debes saber el día anterior pra filtrarlo, POR QUE ESTE VALOR SOLO DEVUELVE UN DATO..
En la parte del filtro solo devuelve si cumple la fecha y el concepto que coloque 'El concepto de filtrar'...
Ahora podemos buscar la fecha pero necesitamos programación, con una consulta POR MAX().. máximo de fecha donde el concepto sea igual al de una caja...
Asi despues de encontarlo, lo capturo y realizo la nueva consulta...
Haber, no se si te complique, pero me parece que si..
Si quieres mandame el formulario, las tablas que se necesitan trabajar, y me explicas otra vez bien...
a: [email protected]
Att:telemaco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas