Demolion Posted July 3, 2016 at 06:04 PM Report #597509 Posted July 3, 2016 at 06:04 PM Codifiquei as seguintes consultas: SomaEntradasTotais: SELECT artigos.Nome, Sum(Entradas.quantidade_ent) AS [Total Entradas] FROM artigos INNER JOIN Entradas ON artigos.Cod_artigo = Entradas.Cod_artigo GROUP BY artigos.Nome; SomaSaidasTotais: SELECT Artigos.Nome, Sum(Saidas.quantidade_sai) AS [Total Saidas] FROM Artigos INNER JOIN Saidas ON Artigos.Cod_artigo = Saidas.cod_artigo GROUP BY Artigos.Nome; StockTotal: SELECT Artigos.cod_artigo, Artigos.Nome, Sum([somaEntradasTotais]![Total Entradas]-[somaSaidasTotais]![Total Saidas]) AS Stock FROM Artigos, SomaEntradasTotais, SomaSaidasTotais GROUP BY Artigos.cod_artigo, Artigos.Nome; Quando a consulta StockTotal é executada contendo contendo apenas um registo de artigos, funciona normalmente. EX: Artigo:a1 --> Entradas:10 --> Saidas:5 ------------> Resultado da Consulta: Artigo:a1 -->5 No entanto quando tenho 2 ou mais artigos ela soma os dois e duplica para as duas linhas EX: Artigo:a1 --> Entradas:10 --> Saidas:5 Artigo:a2 --> Entradas:20 --> Saidas:5 Resultado da Consulta: Artigo:a1 --> 40, Artigo:a2 --> 40 Eu estou a presumir que tenha a ver com a forma como as tabelas estão relacionada, mas por um lado nao estou a ver outra forma de as relacionar e por outro nao estou a ver o que está de errado, se estiver, com a consulta. Se me conseguirem dar uma ajuda eu agradecia 🙂 AQUI ESTÁ O FICHEIRO: https://1drv.ms/u/s!Ao_FfsJUSm3dgmGHmlet4xduVe_l
carlosAl Posted July 5, 2016 at 05:00 PM Report #597520 Posted July 5, 2016 at 05:00 PM manda na versao Access 2003
Demolion Posted July 6, 2016 at 07:10 PM Author Report #597553 Posted July 6, 2016 at 07:10 PM aqui está: https://1drv.ms/u/s!Ao_FfsJUSm3dgmLvkU0vW4oD4e26
carlosAl Posted July 7, 2016 at 07:07 PM Report #597574 Posted July 7, 2016 at 07:07 PM Nao verifiquei em pormenor o que pretendes fazer , mas se percebi bem o que queres é o stock do produto que esta escolhido no formulario FormArtigos se assim for acho q podes fazer assim: a consulta stockTotal iria buscar os dados a duas novas consultas : SELECT Entradas.Cod_artigo, Sum(Entradas.quantidade_ent) AS SomaDequantidade_ent FROM Entradas GROUP BY Entradas.Cod_artigo HAVING (((Entradas.Cod_artigo)=[Forms]![FormArtigos]![Cod_artigo])); SELECT Saidas.cod_artigo, Sum(Saidas.quantidade_sai) AS SomaDequantidade_sai FROM Saidas GROUP BY Saidas.cod_artigo HAVING (((Saidas.cod_artigo)=[Forms]![FormArtigos]![Cod_artigo])); e finalmente a consulta stockTotal iria buscar os dados ás 2 anteriores : SELECT StockT_E.Cod_artigo, StockT_E.SomaDequantidade_ent, StockT_S.SomaDequantidade_sai, [somaDequantidade_ent]-[somaDequantidade_sai] AS Stock FROM StockT_E INNER JOIN StockT_S ON StockT_E.Cod_artigo = StockT_S.cod_artigo; 1 Report
Demolion Posted July 8, 2016 at 12:06 AM Author Report #597583 Posted July 8, 2016 at 12:06 AM ja tenho uma funcionalidade feita dessa maneira. o que eu queria era uma listagem do stock de TODOS os artigos
carlosAl Posted July 8, 2016 at 10:39 AM Report #597584 Posted July 8, 2016 at 10:39 AM entao nao devo estar a perceber o que queres, porque se queres todos os produtos listados, porque estas a limitar a listagem ao produto que tem o foco no formulario ? se queres todos os produtos retira a condiçao da primeira consulta HAVING (((Entradas.Cod_artigo)=[Forms]![FormArtigos]![Cod_artigo])); e da segunda consulta HAVING (((Saidas.Cod_artigo)=[Forms]![FormArtigos]![Cod_artigo])); depois depois ao executar a consulta stockTotal o resultado tera de ser o correto 1 Report
Demolion Posted July 8, 2016 at 02:42 PM Author Report #597591 Posted July 8, 2016 at 02:42 PM OK! Finalmente funciona! Ao juntar os teus dois comentários ficou a funcionar corretamente 😄 Muitíssimo obrigado.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now