Jump to content

Recommended Posts

Posted

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

Posted

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;
  • Vote 1
Posted

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

  • Vote 1

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.