Sql -gt; Pedidos Valor total dos pedidos

Delphi

19/09/2006

Salve!!!

Estou tentando mostrar em um dbGrid os ultimos pedidos realizados por determinado cliente. A base de dados que estou lendo esta DBF ( foxpro ) e estou usando o Delphi 7 com o ADO usando um driver da Microsoft. Meu sql esta assim:

select top 10 ped.dat_dc1 as pedido_data, ped.cod_dc1 as pedido_codigo, fun.nom_fu1 as pedido_vendedor, ped.pre_dc1 as pedido_pagamento, cast(0 as float) as pedido_desconto, (select sum((pedi.ppr_dc2 * pedi.pq1_dc2)) from ped_cl_2 pedi where pedi.cod_dc2 = ped.cod_dc1) as pedido_total from ped_cl_1 ped inner join funciona fun on (ped.fu1_dc1 = fun.cod_fu1) where ped.cli_dc1 = ´29865´ order by ped.dat_dc1 desc


E o erro que esta sendo retornado:

O provedor de dados ou outro serviço retornou status E_FAIL.



Eu acho que o problema esta nesta linha:

(select sum((pedi.ppr_dc2 * pedi.pq1_dc2)) from ped_cl_2 pedi where pedi.cod_dc2 = ped.cod_dc1) as pedido_total


pois quando eu faço assim:

(select sum((pedi.ppr_dc2 * pedi.pq1_dc2)) from ped_cl_2 pedi where pedi.cod_dc2 = 16711) as pedido_total


Informo um numero de pedido o sql funciona blzinha mas somando sempre o pedido com codigo 16711.

Alguem sabe onde estou errando?

Agradeço desde já.


Mmoreira

Mmoreira

Curtidas 0

Respostas

Motta

Motta

19/09/2006

Até onde saiba dbf não suporta sub-select.

Acho que vc terá de usar um campo calculado.


GOSTEI 0
Mmoreira

Mmoreira

19/09/2006

Um colega disse que é possivel fazer sub select com DBF mas tambem nao conseguiu detectar onde esta o problema.
De qualquer forma obrigado pela ajuda


GOSTEI 0
Mmoreira

Mmoreira

19/09/2006

Fiz algumas alterações no Sql e agora nao esta dando mais o erro mas tambem nao esta somando corretamente o valor total do pedido ... esta repetindo o mesmo valor para todos os registros encontrados.

select  
top 10
ped.dat_dc1 as pedido_data, 
ped.cod_dc1 as pedido_codigo, 
fun.nom_fu1 as pedido_vendedor, 
ped.pre_dc1 as pedido_pagamento, 
cast(0 as float) as pedido_desconto, 
(select sum((ppr_dc2 * pq1_dc2)) from ped_cl_2 where ped_cl_2.cod_dc2 = ped_cl_1.cod_dc1) as pedido_total 
from ped_cl_1 ped 
inner join funciona fun on (ped.fu1_dc1 = fun.cod_fu1) 
where ped.cli_dc1 = ´29865´ 
order by ped.dat_dc1 desc


O que eu mudei?
Coloquei o nome da tabela completo:


(select sum((ppr_dc2 * pq1_dc2)) from ped_cl_2 where ped_cl_2.cod_dc2 = ped_cl_1.cod_dc1) as pedido_total 



Estou no aguardo!!!


GOSTEI 0
POSTAR