Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Demolion

access - subtração em consulta multiplica valores

Mensagens Recomendadas

Demolion

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carlosAl

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;

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carlosAl

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

Editado por carlosAl
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Demolion

OK!

Finalmente funciona!

Ao juntar os teus dois comentários ficou a funcionar corretamente :D

Muitíssimo obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.