Fórum select por codigo varchar retornando errado #321606

17/05/2006

0

Olá amigos! Estou com o seguinte problema: tenho uma tabela, e estu fazendo uma consulta sql pelo codigo (codigoduptotal char (7) not null primary key) ,
where codigoduptotal >= x and codigoduptotal <= y ordey by codigoduptotal
faço a consulta normalmente, por exemplo, se coloco para selecionar entre os registros de 1 a 50, ele seleciona e ordena de maneira estranha, por ex,
18
19
2
20
21
22
23
29
3
30
estranho, em vez de ele ir para o 20 depois do 19 ele vai para o 2??
e se eu faço a consulta entre 1 e 100, ele retorna
1
10
Como eu resolvo isso pessoal?
Agradeço a ajuda!
Um forte abraço!


Jorgerock

Jorgerock

Responder

Posts

18/05/2006

Sremulador

tem que ser integer ou ter um 0 no incio tipo 01, 10, 02, 20..., para a sequencia dar certo


Responder

Gostei + 0

20/05/2006

Jorgerock

Olá!
Alterei o tipo de campo para integer mas mesmo assim não funcionou. Como eu faço para deixar varchar mas completar com zeros a esquerda?
Obrigado pela atenção!


Responder

Gostei + 0

20/05/2006

Amarildo

Jorge, vamos ver se posso te ajudar, da uma olha nesta dica
unit Zero;



interface

function RetZero(ZEROS:string;QUANT:integer):String;



implementation



function RetZero(ZEROS:string;QUANT:integer):String;

var

I,Tamanho:integer;

aux: string;

begin

aux:=zeros;

Tamanho:=length(ZEROS);

ZEROS:=´´;

for I:=1 to quant-tamanho do

ZEROS:=ZEROS+´0´;

aux:=zeros+aux;

RetZero:=aux;

end;

end.

caso nao consiga entender posso estar fazendo uma outra, ok


Responder

Gostei + 0

20/05/2006

Jorgerock

Olá amigo!
Primeiro obrigado pela ajuda, mas tenho que tentar fazer isso a nivel de banco de dados. Uso um trigger para gerar o codigo no banco de dados, uso firebird 1.5.
Se alguem já passou por algo parecido, de um toque!
Muito obrigado pela atenção de todos!


Responder

Gostei + 0

20/05/2006

Thomaz_prg

Amigo, uma forma simples de se resolver isso seria você ´trocar´ o tipo do campo ao fazer o select ou order by:

select * from tabela where cast(codigoduptotal as integer) >= X
order by cast(codigoduptotal as integer)

onde X é do tipo Inteiro. Isso resolverá seu problema.


Responder

Gostei + 0

21/05/2006

Jorgerock

Olá amigo! Funcionou perfeito!
Muito obrigado pela ajuda de todos!
Um forte abraço!


Responder

Gostei + 0

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

Aceitar