Fórum consulta com join no delphi usando Oracle8i #335196
24/12/2006
0
estou fazendo um programinha simples em casa com o tradicional Sistema de Vendas de Produtos com as 4 tabelas principais que são CLIENTES,PRODUTOS,PEDIDOS,ITENS
estou testando elaborar um relatório com uma consulta sql com join no Delphi usando o Oracle8i como banco de dados e a middelware DBExpress.A Pesquisa tem que me retornar a projeção de vendas por produtos vendidos na tabela Itens que é está relacionada com a Tabela Pedidos. O comando SQL do componente sqlPedidos(TSqlDataSet) é o seguinte:
select Pe.Id_Pedido,Pe.Data,C.Nome,
sum(I.quantidade*I.preco) as TotalPedido
from Pedidos Pe,Itens I,Clientes C
where Pe.ID_Pedido=I.Id_Pedido
and Pe.ID_Cliente=C.ID_Cliente
and Pe.DATA between :Data1 and :Data2
group by C.NOME
order by C.NOME
-----------------------------------------------
coloquei um datasource que tem seu dataset apontado para o sqlPedido!
------------------------------------------------
já para a tabela Itens(relacionada com a tabela Pedidos) coloquei o comando SQL do SqlItens(TSqlDataset) como o seguinte:
select P.Descricao,I.quantidade,I.preco,I.id_preco,
I.quantidade*I.preco as Total_Item
from Itens I,Produtos P
where P.id_produto=I.id_produto
and I.id_Pedido= :id_Pedido
order by P.Descricao
-----------------------------------------------------
depois apontei a propriedade Datasource deste componente(sqlItens) ao datasource que aponta para o SqlPedidos. ( pra o fazer o relacionamento das duas tabelas)
----------------------------------------------------
Se verificar bem é um comando extremamente simples, que não tem erro de semantica e nem de sintaxe ,mas toda vez que tento ativar
a propriedade Active do SqlDataSet me traz um erro
´Comando Sql Não encerrado corretamente´. Alguem poderia me dar uma luz sobre tal problema, se é problema de de dialeto, se é de incompatibilidade do dbExpress com comandos de joins, se tem algum erro de sintaxe, alguem tem uma informação realmente valiosa a fornecer sobre tal assunto!!
obrigado, SPyNight_RJ!!!!!
estou testando elaborar um relatório com uma consulta sql com join no Delphi usando o Oracle8i como banco de dados e a middelware DBExpress.A Pesquisa tem que me retornar a projeção de vendas por produtos vendidos na tabela Itens que é está relacionada com a Tabela Pedidos. O comando SQL do componente sqlPedidos(TSqlDataSet) é o seguinte:
select Pe.Id_Pedido,Pe.Data,C.Nome,
sum(I.quantidade*I.preco) as TotalPedido
from Pedidos Pe,Itens I,Clientes C
where Pe.ID_Pedido=I.Id_Pedido
and Pe.ID_Cliente=C.ID_Cliente
and Pe.DATA between :Data1 and :Data2
group by C.NOME
order by C.NOME
-----------------------------------------------
coloquei um datasource que tem seu dataset apontado para o sqlPedido!
------------------------------------------------
já para a tabela Itens(relacionada com a tabela Pedidos) coloquei o comando SQL do SqlItens(TSqlDataset) como o seguinte:
select P.Descricao,I.quantidade,I.preco,I.id_preco,
I.quantidade*I.preco as Total_Item
from Itens I,Produtos P
where P.id_produto=I.id_produto
and I.id_Pedido= :id_Pedido
order by P.Descricao
-----------------------------------------------------
depois apontei a propriedade Datasource deste componente(sqlItens) ao datasource que aponta para o SqlPedidos. ( pra o fazer o relacionamento das duas tabelas)
----------------------------------------------------
Se verificar bem é um comando extremamente simples, que não tem erro de semantica e nem de sintaxe ,mas toda vez que tento ativar
a propriedade Active do SqlDataSet me traz um erro
´Comando Sql Não encerrado corretamente´. Alguem poderia me dar uma luz sobre tal problema, se é problema de de dialeto, se é de incompatibilidade do dbExpress com comandos de joins, se tem algum erro de sintaxe, alguem tem uma informação realmente valiosa a fornecer sobre tal assunto!!
obrigado, SPyNight_RJ!!!!!
Jonas2006
Curtir tópico
+ 0
Responder
Posts
02/01/2007
Aroldo Zanela
Colega,
Todos as colunas recuperadas no select devem ser declaradas na cláusula Group By. Portanto, a princípio, tente da seguinte forma:
Todos as colunas recuperadas no select devem ser declaradas na cláusula Group By. Portanto, a princípio, tente da seguinte forma:
select Pe.Id_Pedido, Pe.Data, C.Nome, sum(I.quantidade*I.preco) as TotalPedido from Pedidos Pe, Itens I, Clientes C where Pe.ID_Pedido=I.Id_Pedido and Pe.ID_Cliente=C.ID_Cliente and Pe.DATA between :Data1 and :Data2 group by Pe.Id_Pedido, Pe.Data, C.Nome order by C.NOME
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)