ClientDataSet Erro ao Ordenar(IndexFieldNames) - URGENTE

Delphi

23/10/2008

Pessoal,
Estou com um problema meio bizarro.

Tenho uma tabela e quando ordeno pelo nmObjeto essa tabela pelo select fica perfeito. exemplo:

01257-X.SQL
01257A-X.SQL
01257B-X.SQL
01257C-X.SQL
01257D-X.SQL
01257E-X.SQL
01257V1-X.SQL
01257V2-X.SQL

NOTA-SE: Que esta ordenado corretamente.

Logo quando essa informação esta em um ClientDataSet
e Coloco IndexFieldNames : nmObjeto

a ordenação fica assim.......(errado))

01257A-X.SQL
01257B-X.SQL
01257C-X.SQL
01257D-X.SQL
01257E-X.SQL
01257V1-X.SQL
01257V2-X.SQL
01257-X.SQL

NOTA-SE: Que agora o primeiro registro fica por ultimo, ele esta considerando o caracter ´-´ como se fosse depois das letras do alfabeto.
Mas na Tabela ASC ele vem antes. Não sei como ordenar esse cara ali no ClientDataset.
Não posso dar orderBy no select pois essa ordenação é trocada conforme opção na tela.

Essa informação não é mostrado em uma grid, ela é exportado para um TXT.

Será que alguém tem alguma idéia.

Alguém pode ajudar????

Obrigado.


Davefloripa

Davefloripa

Curtidas 0

Respostas

Davefloripa

Davefloripa

23/10/2008

Ninguém pode me ajudar? Alguém tem alguma idéia??


GOSTEI 0
Jc

Jc

23/10/2008

Na verdade, observando bem você vai ver que a ordem correta é a que vc diz que esta errada. por exemplo, ignore o nº 01257..., e observe somente as letras A, B, C...:
-------\/
01257A-X.SQL
01257B-X.SQL

o que vc pode fazer é colocar em ordem descendente quando jogar no ClientDataSet ou chamar o IndexFieldnames


GOSTEI 0
Davefloripa

Davefloripa

23/10/2008

Não, assim não da.

eu preciso que fique assim(que ordene assim))

01257-X.SQL
01257A-X.SQL
01257B-X.SQL

Eu não sei quando vai ocorrer essa situaçã, mas as vezes ocorre, e quando ela ocorre gostaria que ordenasse da forma correta.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/10/2008

jogue esses dados numa coluna no excel (em qualquer ordem), mande ordenar e veja o resultado.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/10/2008

o sinal de menos é o caractere ASCII 45, que ficaria no início da lista.
provavelmente, por se tratar de strings, o caractere ´-´ que você vê, deve ser o de código ASCII 150, ou algum outro...


GOSTEI 0
Davefloripa

Davefloripa

23/10/2008

Obrigado pelo esclarecimento....

Mas preciso achar uma solução ...
de ordenar pelo caracter ASCII45,

Acho que criar uma outra coluna e aonde tiver ´-´ substituir por outro caracter que seja antes na tabela ASCII e ordenar por essa nova coluna.

Obrigado!!!


GOSTEI 0
POSTAR