CALCULO NO COMANDO SQL

FGONCALVES 23/07/2015 13:25:01
#449158
Galera, preciso que o sql faça a seguinte pesquisa:
tenho duas tabelas: uma de cadastro de mercadoria e outra com a movimentação da mercadoria.
eu preciso que o sql some (todas as compras e todas as vendas) da tabela movimentação da mercadoria. Daí faça o calculo compra - venda = estoque. só vai sair no relatorio, mercadorias com estoque < que o estoque minimo (este campo está na tabela do cadastro de mercadoria)

Vejam o código:

With frm
SQL = [Ô]SELECT MAX(MERCADORIAS.CODIGOBARRAS)CODIGOBARRAS,MAX(MERCADORIAS.DESCRICAO) DESCRICAO,MAX(MERCADORIAS.UNIDADE)UNIDADE,MAX(MERCADORIAS.ESTOQUEMINIMO) AS ESTOQUEMINIMO, [Ô] & _
[Ô]MOVIMENTACAOMERCADORIA.MERCADORIA,SUM (MOVIMENTACAOMERCADORIA.QUANTIDADEENTRADA) AS ENTRADA,SUM (MOVIMENTACAOMERCADORIA.QUANTIDADESAIDA) AS SAIDA [Ô] & _
[Ô]FROM (MERCADORIAS INNER JOIN MOVIMENTACAOMERCADORIA ON MERCADORIAS.CODIGO=MOVIMENTACAOMERCADORIA.MERCADORIA) WHERE [Ô]

If .optESTOQUEMAIOR.Checked = True Then
SQL += [Ô](QUANTIDADEENTRADA-QUANTIDADESAIDA)>ESTOQUEMINIMO [Ô]
ElseIf .optESTOQUEIGUAL.Checked = True Then
SQL += [Ô](QUANTIDADEENTRADA-QUANTIDADESAIDA)=ESTOQUEMINIMO [Ô]
ElseIf .optESTOQUEMENOR.Checked = True Then
SQL += [Ô](QUANTIDADEENTRADA-QUANTIDADESAIDA)<ESTOQUEMINIMO [Ô]
End If
If .optSELECIONAR.Checked = True And .cmbMERCADORIA.Codigo > 0 Then
SQL += [Ô]AND MERCADORIA=[Ô] & .cmbMERCADORIA.Codigo & [Ô] [Ô]
End If
SQL += [Ô]GROUP BY MERCADORIA[Ô]
End With

COMMAND.Connection = ACESSOS.FbConnection
COMMAND.CommandText = (SQL)
Dim adapter As New FirebirdSql.Data.Firebird.FbDataAdapter
adapter.SelectCommand = COMMAND
Dim RelatorioEstoqueMinimo As DataTable = New DataTable
adapter.Fill(RelatorioEstoqueMinimo)

obrigado, pessoal
TUNUSAT 23/07/2015 14:12:32
#449160
Resposta escolhida
FGONCALVES,

Não sei se é isso que você quer, se não for pelo menos os CREATE TABLE já estão prontos para quem quiser brincar... KKKKK!


use teste

--CREATE TABLE Mercadorias
-- (
-- CODIGO int PRIMARY KEY,
-- CODIGOBARRAS varchar(255),
-- DESCRICAO varchar(255),
-- UNIDADE varchar(255),
-- ESTOQUEMINIMO int
-- );

--CREATE TABLE MovimentacaoMercadoria
--(
--MERCADORIA int PRIMARY KEY,
--QUANTIDADEENTRADA int,
--QUANTIDADESAIDA int
--);


INSERT INTO MERCADORIAS (CODIGO, CODIGOBARRAS, DESCRICAO, UNIDADE, ESTOQUEMINIMO)
VALUES (1, [ô]2568568[ô], [ô]TESTE 1[ô], [ô]Kilo[ô], 100)

INSERT INTO MovimentacaoMercadoria (MERCADORIA, QUANTIDADEENTRADA, QUANTIDADESAIDA)
VALUES (1, 90, 80)

select * from MERCADORIAS
select * from MovimentacaoMercadoria

SELECT *
FROM MERCADORIAS
INNER JOIN MOVIMENTACAOMERCADORIA
ON MERCADORIAS.CODIGO = MOVIMENTACAOMERCADORIA.MERCADORIA
WHERE (QUANTIDADEENTRADA-QUANTIDADESAIDA)<ESTOQUEMINIMO
AND MERCADORIA = 1

SELECT MAX(ME.CODIGOBARRAS)CODIGOBARRAS,
MAX(ME.DESCRICAO) DESCRICAO,
MAX(ME.UNIDADE)UNIDADE,
MAX(ME.ESTOQUEMINIMO) AS ESTOQUEMINIMO,
MM.MERCADORIA,
SUM (MM.QUANTIDADEENTRADA) AS ENTRADA,
SUM (MM.QUANTIDADESAIDA) AS SAIDA,
SUM (MM.QUANTIDADEENTRADA-MM.QUANTIDADESAIDA) AS DIFERENCA,
SUM (MM.QUANTIDADEENTRADA-ESTOQUEMINIMO) AS DIFERENCAENTRADA,
SUM (MM.QUANTIDADESAIDA-ESTOQUEMINIMO) AS DIFERENCASAIDA,
SUM ((MM.QUANTIDADEENTRADA-MM.QUANTIDADESAIDA)-ESTOQUEMINIMO) AS DIF
FROM (MERCADORIAS ME
INNER JOIN MOVIMENTACAOMERCADORIA MM
ON ME.CODIGO=MM.MERCADORIA)
WHERE (MM.QUANTIDADEENTRADA - MM.QUANTIDADESAIDA) < ESTOQUEMINIMO
AND MM.MERCADORIA = 1
GROUP BY MM.MERCADORIA


[][ô]s,
Tunusat.
Tópico encerrado , respostas não são mais permitidas