Bom dia colegas.
a consulta é para somar todas as entradas, saidas e encontrar o valor do financeiro do estoque e o CMP(custo medio ponderado)
Ela executa mas a partir de 50 registros de entrada e saida ela fica lenta.
A origem são 3 tabelas, tblConsumo(QuantCons - SubTotalC, ), tblEntrada(QuantEntrada - SubTotalE), tblSaida(QuantSaida-SubTotalS, QuantAlterada - SubTotalAlt e QuantRetorno- SubTotalRet).
1 Consulta:
SELECT tbl_produto.IdProd, tbl_produto.DescProd, IIf(IsNull([IdProd]),0,DSum("[QuantEntrada]","tbl_EntradaDetalhe","[IdProd]=" & [IdProd])) AS QEntrada, IIf(IsNull([IdProd]),0,DSum("[QuantRetorno]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QRetorno, Nz([QEntrada])+Nz([QRetorno]) AS EntradasQ, IIf(IsNull([IdProd]),0,DSum("[SubTotalE]","tbl_EntradaDetalhe","[IdProd]=" & [IdProd])) AS [R$Entrada], IIf(IsNull([IdProd]),0,DSum("[SubTotalRet]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Retorno], Nz([R$Entrada])+Nz([R$Retorno]) AS [EntradasR$], IIf(IsNull([IdProd]),0,DSum("[QuantSaida]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QSaida, IIf(IsNull([IdProd]),0,DSum("[QuantCons]","tbl_ConsumoDetalhe","[IdProd]=" & [IdProd])) AS QConsumo, IIf(IsNull([IdProd]),0,DSum("[QuantAlterada]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QAlterada, Nz([QSaida])+Nz([QConsumo])+Nz([QAlterada]) AS SaidasQ, IIf(IsNull([IdProd]),0,DSum("[subtotalS]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Saida], IIf(IsNull([IdProd]),0,DSum("[subtotalC]","tbl_ConsumoDetalhe","[IdProd]=" & [IdProd])) AS [R$Consumo], IIf(IsNull([IdProd]),0,DSum("[subtotalAlt]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Alterada], Nz([R$Saida])+Nz([R$Consumo])+Nz([QAlterada]) AS [SaidasR$], tbl_produto.Unid
FROM tbl_produto
GROUP BY tbl_produto.IdProd, tbl_produto.DescProd, tbl_produto.Unid
ORDER BY tbl_produto.DescProd;
2 consulta para encontrar o CMP
SELECT cs_EstoqueFinanceiroSintetico.IdProd, cs_EstoqueFinanceiroSintetico.DescProd, [EntradasQ]-[SaidasQ] AS Estoque, [EntradasR$]-[SaidasR$] AS ValorEstoque, [ValorEstoque]/[estoque] AS CMP, cs_EstoqueFinanceiroSintetico.[EntradasR$], cs_EstoqueFinanceiroSintetico.[SaidasR$], cs_EstoqueFinanceiroSintetico.EntradasQ, cs_EstoqueFinanceiroSintetico.SaidasQ, cs_EstoqueFinanceiroSintetico.Unid
FROM cs_EstoqueFinanceiroSintetico
GROUP BY cs_EstoqueFinanceiroSintetico.IdProd, cs_EstoqueFinanceiroSintetico.DescProd, cs_EstoqueFinanceiroSintetico.[EntradasR$], cs_EstoqueFinanceiroSintetico.[SaidasR$], cs_EstoqueFinanceiroSintetico.EntradasQ, cs_EstoqueFinanceiroSintetico.SaidasQ, cs_EstoqueFinanceiroSintetico.Unid;
a consulta é para somar todas as entradas, saidas e encontrar o valor do financeiro do estoque e o CMP(custo medio ponderado)
Ela executa mas a partir de 50 registros de entrada e saida ela fica lenta.
A origem são 3 tabelas, tblConsumo(QuantCons - SubTotalC, ), tblEntrada(QuantEntrada - SubTotalE), tblSaida(QuantSaida-SubTotalS, QuantAlterada - SubTotalAlt e QuantRetorno- SubTotalRet).
1 Consulta:
SELECT tbl_produto.IdProd, tbl_produto.DescProd, IIf(IsNull([IdProd]),0,DSum("[QuantEntrada]","tbl_EntradaDetalhe","[IdProd]=" & [IdProd])) AS QEntrada, IIf(IsNull([IdProd]),0,DSum("[QuantRetorno]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QRetorno, Nz([QEntrada])+Nz([QRetorno]) AS EntradasQ, IIf(IsNull([IdProd]),0,DSum("[SubTotalE]","tbl_EntradaDetalhe","[IdProd]=" & [IdProd])) AS [R$Entrada], IIf(IsNull([IdProd]),0,DSum("[SubTotalRet]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Retorno], Nz([R$Entrada])+Nz([R$Retorno]) AS [EntradasR$], IIf(IsNull([IdProd]),0,DSum("[QuantSaida]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QSaida, IIf(IsNull([IdProd]),0,DSum("[QuantCons]","tbl_ConsumoDetalhe","[IdProd]=" & [IdProd])) AS QConsumo, IIf(IsNull([IdProd]),0,DSum("[QuantAlterada]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS QAlterada, Nz([QSaida])+Nz([QConsumo])+Nz([QAlterada]) AS SaidasQ, IIf(IsNull([IdProd]),0,DSum("[subtotalS]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Saida], IIf(IsNull([IdProd]),0,DSum("[subtotalC]","tbl_ConsumoDetalhe","[IdProd]=" & [IdProd])) AS [R$Consumo], IIf(IsNull([IdProd]),0,DSum("[subtotalAlt]","tbl_SaidaDetalhe","[IdProd]=" & [IdProd])) AS [R$Alterada], Nz([R$Saida])+Nz([R$Consumo])+Nz([QAlterada]) AS [SaidasR$], tbl_produto.Unid
FROM tbl_produto
GROUP BY tbl_produto.IdProd, tbl_produto.DescProd, tbl_produto.Unid
ORDER BY tbl_produto.DescProd;
2 consulta para encontrar o CMP
SELECT cs_EstoqueFinanceiroSintetico.IdProd, cs_EstoqueFinanceiroSintetico.DescProd, [EntradasQ]-[SaidasQ] AS Estoque, [EntradasR$]-[SaidasR$] AS ValorEstoque, [ValorEstoque]/[estoque] AS CMP, cs_EstoqueFinanceiroSintetico.[EntradasR$], cs_EstoqueFinanceiroSintetico.[SaidasR$], cs_EstoqueFinanceiroSintetico.EntradasQ, cs_EstoqueFinanceiroSintetico.SaidasQ, cs_EstoqueFinanceiroSintetico.Unid
FROM cs_EstoqueFinanceiroSintetico
GROUP BY cs_EstoqueFinanceiroSintetico.IdProd, cs_EstoqueFinanceiroSintetico.DescProd, cs_EstoqueFinanceiroSintetico.[EntradasR$], cs_EstoqueFinanceiroSintetico.[SaidasR$], cs_EstoqueFinanceiroSintetico.EntradasQ, cs_EstoqueFinanceiroSintetico.SaidasQ, cs_EstoqueFinanceiroSintetico.Unid;