GARANTIR DESCONTO

Fórum Ordenar pelo ClientDataSet #412515

08/02/2012

0

Ola amigos!

Tenho uma base no mysql, onde os dados estao da seguinte forma na tabela:
0001000, 00202, 01000, 1, 10, precisso ordenar esses codigos, para que
fiquem da seguinte ordem no relatorio: 1, 10, 000100, 00202, 01000.
O campo codigo é um varchar, estou utilizando um ClienDataSet e tenho que ordenar
pelo indexFieldNames, estou utilizando o comando abaixo mas nao funciona, porque os
codigos tem zeros na frente.
if ComboBox2.ItemIndex=0 then // o combobox2 é onde tem pra ordenar pelo codigo ou pela descricao do produto
estoquep.IndexFieldNames:=codigo

alguem pode passar uma solucao, ja tinha iniciado outro chamado, mas como estou precisando disso
urgente abri novo chamado.

Abraços Odair






Odair Vavassori

Odair Vavassori

Responder

Posts

08/02/2012

Joel Rodrigues

Já tentou fazer um cast na própria consulta SQL? Você seleciona a coluna normalmente, mas na cláusula ORDER BY você faz um cast, convertendo o código para inteiro.
Responder

Gostei + 0

08/02/2012

Odair Vavassori

O Cast funciona, mas nao no meu caso,
porque uso uma tabela temporaria, para ordenar.

Odair
Responder

Gostei + 0

08/02/2012

Marco Salles

Então Odair utilize um Truque

Crie um campo Internacalc , de um Nome propricio
Se quiser coloque como Invisivel , não faz diferença

escreva o seguinte codigo no evento OnCalcFields do CDS

if dataset.State = dsInternalCalc then
with TClientDataSet(dataset) do
FieldByName(Truque).AsString:=
StringOfChar(0,6 - length(FieldByName(codigo).AsString))+
FieldByName(codigo).AsString;
end;

ps) aqui meu campo chama TRUQUE e o Campo que quer Ordenar é CODIGO

Coloqueo um Tamanho de SEIS pq vi que voce tinha 000100 , mas pode aumentar a gosto

Agora é so fazer

ClientDataSet1.IndexFieldNames:=Truque;

e estará ordenado como voce quer (

Responder

Gostei + 0

09/02/2012

Odair Vavassori

Boa noite

Deu certo, resolveu meu problema

Obrigado pela força Marco

Odair
Responder

Gostei + 0

09/02/2012

Marco Salles

Que bom que deu tudo certo
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar