AGRUPAR E MOSTRAR O PRECO DO MAIS RECENTE
SQL = [Ô]SELECT PRODUTOS.*, PRODUTOS_ENTRADA_ITENS.*, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO ORDER BY PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO[Ô]
No grid vai aparece informações de produtos.
Abacate R$ 2,00
Feijao R$ 3,50
Arroz R$ 1,55
o problema é que na tabela PRODUTOS_ENTRADA_ITENS onde fica todas as entradas daquele mesmo produto, ou seja, toda vez que chega aquele produto na loja eu dou entrada... entao quando mostrar no grid aparece todas as entradas, exemplo:
Abacate R$ 2,00
Abacate R$ 1,80
Abacate R$ 2,20
Feijao R$ 3,50
Arroz R$ 1,55
então quero agrupar por produto (PRODUTOS.CODIGO) para aparecer somente 1 de cada produto...
ai me saiu outra duvida... o preço final do produto é a ultima entrada que dei naquele produto na tabela PRODUTOS_ENTRADA_ITENS.... o campo PRODUTOS_ENTRADA_ITENS.VENDA
então alem de agrupar POR PRODUTO eu tenho tambem quem pegar a ultima entrada daquele produto para mostrar o valor correto.
então pensei que é só pegar a entrada que tiver o campo CODIGO maior, seria ela a ultima entrada (PRODUTOS_ENTRADA_ITENS.CODIGO)
entao como ficaria esse codigo para AGRUPAR POR PRODUTO e mostrar o PREÇO DA ULTIMA ENTRADA daquele produto?
Eu usaria o having
veja esse código e modifique para o seu
.CommandText = [Ô]SELECT vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, Last(vendas.data) AS ultima_compra, cliente.bairro FROM cliente INNER JOIN vendas ON cliente.codigo = vendas.cliente GROUP BY vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, cliente.bairro HAVING (((Last(vendas.data))<= #[Ô] & Format(Me.txtdata, [Ô]mm/dd/yyyy[Ô]) & [Ô]# ))order by 5 desc [Ô]
Com esse código eu busco a última data de compra de cada cliente e repasso para um listview
Citação::
Amigo,
Eu usaria o having
veja esse código e modifique para o seu
.CommandText = [Ô]SELECT vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, Last(vendas.data) AS ultima_compra, cliente.bairro FROM cliente INNER JOIN vendas ON cliente.codigo = vendas.cliente GROUP BY vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, cliente.bairro HAVING (((Last(vendas.data))<= #[Ô] & Format(Me.txtdata, [Ô]mm/dd/yyyy[Ô]) & [Ô]# ))order by 5 desc [Ô]
Com esse código eu busco a última data de compra de cada cliente e repasso para um listview
eu nao entendi muito bem a finalidade do HAVING, entao fiz assim usando parte do que vc me passou:
SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO[Ô]
[txt-color=#e80000]Deu o erro:
Você tentou executar uma consulta que não inclui a expressão [ô]DESCRICAO[ô] especificada com parte de uma função agregada.[/txt-color]
Como eu faço?
Você tem que agrupar todos os campos.
tenta assim:
SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO[Ô]
Citação::
Webier,
Você tem que agrupar todos os campos.
tenta assim:
SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO[Ô]
Deu o erro:
Você tentou executar uma consulta que não inclui a expressão [ô]var_Venda[ô] especificada com parte de uma função agregada.