Consulta Sql

Delphi

01/02/2012

Boa noite Pessoal

Precisso ordenar um relatorio em ordem de codigo,
mas os codigos no banco estao da seguinte maneira:
000100, 00202, 01000, 1, 10, ele sai nessa ordem que passei no
relatorio mesmo ordenando pelo codigo. Tentei usar o comando Lpad,
mas nao deu certo. Seria mais facil se eu formatase no banco
colocando os zeros na frente, mas tem um problema na hora que o
cliente for fazer uma venda tera que digitar todos os zeros.
Teria que sair na seguinte ordem o relatorio 1, 10, 000100, 00202, 01000.
Alguem pode me ajudar.

Obrigado
Odair
Odair Vavassori

Odair Vavassori

Curtidas 0

Respostas

Rafael Ribeiro

Rafael Ribeiro

01/02/2012

Bom Dia, você não mencionou qual banco sql está utilizando.

Para minha resposta estou utilizando o Firebird 2.1.

Criei uma tabela denominada CODIGO com os seguintes campos IDCODIGO (Integer) e CODIGO (VARCHAR). Adicionei os valores que você passou... 000100, 00202, 01000, 1, 10. E fiz o seguinte Select:

SELECT C.codigo

FROM CODIGO C

ORDER BY CAST(C.codigo AS INTEGER)


E o resultado saiu da forma que vc pediu... 1, 10, 000100, 00202, 01000.

Se desejar que aparece somente como número inteiros, faça o select

SELECT CAST(C.codigo AS INTEGER)

FROM CODIGO C

ORDER BY CAST(C.codigo AS INTEGER)


Espero ter ajudado!

Abçs

Rafael
GOSTEI 0
Rafael Ribeiro

Rafael Ribeiro

01/02/2012

Bom Dia, você não mencionou qual banco sql está utilizando.

Para minha resposta estou utilizando o Firebird 2.1.

Criei uma tabela denominada CODIGO com os seguintes campos IDCODIGO (Integer) e CODIGO (VARCHAR). Adicionei os valores que você passou... 000100, 00202, 01000, 1, 10. E fiz o seguinte Select:


SELECT C.codigo

FROM CODIGO C

ORDER BY CAST(C.codigo AS INTEGER)


E o resultado saiu da forma que vc pediu... 1, 10, 000100, 00202, 01000.

Se desejar que aparece somente como número inteiros, faça o select

SELECT CAST(C.codigo AS INTEGER)

FROM CODIGO C

ORDER BY CAST(C.codigo AS INTEGER)

Espero ter ajudado!

Abçs

Rafael
GOSTEI 0
Odair Vavassori

Odair Vavassori

01/02/2012

Bom dia

Desculpe esqueci de mencionar o banco, mas utilizo mysql.
O nome da tabela é produtos, codp é o codigo, que é um varchar.

Obrigado

GOSTEI 0
Odair Vavassori

Odair Vavassori

01/02/2012

Boa Noite
Usei o select abaixo ele funcionona se rodar dentro do banco.
SELECT * FROM produtos ORDER BY CAST(codp AS SIGNED)

Mas nao solucionou meu problema, porque estou utilizando um TClientDataSet e tenho
que ordenar pelo FieldName codp, estou usando o comando abaixo mas nao funciona.

if ComboBox2.ItemIndex=0 then
estoquep.IndexFieldNames:=codp


Alguem pode me ajudar

Obrigado
Odair
GOSTEI 0
Marco Salles

Marco Salles

01/02/2012

GOSTEI 0
POSTAR