Order não está funcionando num select

Delphi

17/11/2010

Olá amigos, uso o seguinte comando:

select '1' as referencia,nomven,
  (select Count(*) from vendas
     where codven=vendedor.codven and datven between :dat1 and :dat2) as totref
from vendedor
where codven between :ven1 and :ven2
union
select '2' as referencia,nomven,
  (select sum(qtd) from vendasi
     left join vendas on vendas.pedido=vendasi.pedido
     where codven=vendedor.codven and vendas.datven between :dat1 and :dat2) as totref
from vendedor
where codven between :ven1 and :ven2
union
select '3' as referencia,nomven,
  (select sum(totalliq) from vendas
     where codven=vendedor.codven and datven between :dat1 and :dat2) as totref
from vendedor
where codven between :ven1 and :ven2
order by 1,3 desc


Nele gero três sequencias de informacoes de levantamento de vendas para estatistica:
1) Quantidade de atendimentos
2) Quantidade em unidades
3) Valor da venda

Nele o comando ORDER não funciona dentro do meu sistema, pelo IB ordena perfeitamente, já que preciso ordenar primeiro pelo campo "referencia" e depois decrescente pelo campo calculado "totref".

O que pode ser?

att
Mario
Mario Inacio

Mario Inacio

Curtidas 0

Respostas

Command Informatica

Command Informatica

17/11/2010

Seu select parece estar correto. Verifique se você está usando clientDataSet para mostrar esse dados e se não a propriedade indexFieldNames está com algum valore definido ou se algum índice está sendo criado para o clientDataSet, pois se o mesmo select está funcionando no IBExpert então deverá funcionar no sistema também.


Espero ter ajudado.
GOSTEI 0
Mario Inacio

Mario Inacio

17/11/2010

Bom dia,
Utilizo ClientDataSet e não declaro nenhum indice diretamente no componente, somente através de comandos pelo SqlDataSet.
GOSTEI 0
Pietro Braga

Pietro Braga

17/11/2010

Veja no DataSetProvider em Options se a propriedade poAllowCommandText está como True. 
GOSTEI 0
Wilson Junior

Wilson Junior

17/11/2010

No seu componente TDataSetProvider, altere a propriedade Options.poRetainServerOrder para True.

Espero ter colaborado.
GOSTEI 0
Mario Inacio

Mario Inacio

17/11/2010

Olá amigos,

Alterando Options.poRetainServerOrder pata True funcionou corretamente.

Obrigado a todos
GOSTEI 0
Jose Neto

Jose Neto

17/11/2010

Olá pessoal, eu estava com esse mesmo problema, dentro do delphi o meu comando sql não obedecia o order by que eu tinha colocado, ja no ibexpert, funcionava beleza. Fui no componente tdatasetprovider, e mudei a propriedade poretainserverorder para true e tudo funcionou beleza. Valeu mesmo mesmo pela dica aí do nosso amigo. Um grande abraço para todos. José Carlos
GOSTEI 0
POSTAR