Ir para conteúdo
Fórum Script Brasil
  • 0

Filtrar Somente Os Primeiros Numeros?


adriano_servitec

Pergunta

Boa tarde amigos, o problema agora é saber como faço para pegar somente os resultados dos dois primeiros numeros do campo dat tabela

Bom tenho dois edits tipo edit1 e edit2 e um botbtn para fazer o comando dentro de um dbgrid. então na tabela esta assim

11-RONDONIA

1100015-ALTA FLOTESTA

12-ACRE

1200013-ACRELANDIA

13-AMAZONAS

1300029-ALVARES

Bom então no edit1 digitar assim 11 e no edit2 assim 13, quero que no dbgrid me apareça da seguinte forma:

11-RONDONIA

12-ACRE

13-AMAZONAS

Fiz de duas formas mais não aparece como quero e sim pega somente os primeiros numeros que digitei, mais aparece os nomes das cidades tambem.

QUERY2.ACTIVE:=TRUE;

query2.refresh;

with Query2 do

begin

close;

sql.clear;

sql.add('select * from tb8munic');

//sql.add('WHERE (comunicipio >= ' + quotedstr(edit2.Text) + ' ) and (comunicipio <= ' + quotedstr(edit3.Text) + ' )');

SQL.ADD('where substring(comunicipio from 1 for 2) between ' + quotedstr(Edit2.Text) +' and '+quotedstr(Edit3.Text)+ '');

open;

end;

Da forma acima não da certo como eu quero.

alguém pode me ajudar?

Grato

Adriano

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Poxa já tentei ate usando like e não funciona

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

QUERY2.ACTIVE:=TRUE;

query2.refresh;

with Query2 do

begin

try

close;

sql.clear;

sql.add('select * from tb8munic');

//sql.add('WHERE (comunicipio >= ' + quotedstr(edit2.Text) + ' ) and (comunicipio <= ' + quotedstr(edit3.Text) + ' )');

//SQL.ADD('where substring(comunicipio from 1 for 2) between ' + quotedstr(Edit2.Text) +' and '+quotedstr(Edit3.Text)+ '');

//sql.add('where comunicipio = like :Vcini and comunicipio = like :Vcfim');

sql.add('WHERE (comunicipio like :vcini) and (comunicipio like :vcfim)');

Query2.ParamByName('Vcini').Value:=Edit2.Text+'%';

Query2.ParamByName('Vcfim').Value:='%'+Edit3.Text;

//sql.add('WHERE (comunicipio >= ' + quotedstr(edit2.Text + '00') + ' ) and (comunicipio <= ' + quotedstr(edit3.Text + '99') + ' )');

open;

except

beep;

ShowMessage('Erro de SQL!');

end;

end;

end;

alguém tem uma dica como fazer isso?

Grato pela ajuda

T+

Link para o comentário
Compartilhar em outros sites

  • 0

Ola mais uma vez Wilton. Bom depois de tantas quebradas de cabeça sobre esse codigo cheguei ao resultado esperado, e deixo aqui para compartilhar com outras pessoas que talvez um dia precise desse codigo:

Eis o codigo

begin

with Query2 do

try

close;

sql.clear;

sql.add('select * from tb8munic');

sql.add('WHERE (substring(COmunicipio from 1 for 2) between :vcini and :vcfim)');

sql.add('and (substring(COmunicipio from 7 for 3) < :numero)');

ParamByName('Vcini').Value:= Edit2.Text;

ParamByName('Vcfim').Value:= Edit3.Text;

ParamByName('numero').Value:= '0';

open;

except

beep;

ShowMessage('Erro de SQL!');

end;

end;

Percebi que na tabela depois dos dois primeiros numeros tinha um 0 (zero) então foi so fazer um sbstring do 7 ao 3 sendo menor que 0

Pronto o resultado ficou satisfatorio

Obrigado pela força e ajuda amigo

Abraços

T+

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...