adriano_servitec Postado Novembro 10, 2005 Denunciar Share Postado Novembro 10, 2005 Boa tarde amigos, o problema agora é saber como faço para pegar somente os resultados dos dois primeiros numeros do campo dat tabelaBom tenho dois edits tipo edit1 e edit2 e um botbtn para fazer o comando dentro de um dbgrid. então na tabela esta assim11-RONDONIA1100015-ALTA FLOTESTA12-ACRE1200013-ACRELANDIA13-AMAZONAS1300029-ALVARESBom então no edit1 digitar assim 11 e no edit2 assim 13, quero que no dbgrid me apareça da seguinte forma:11-RONDONIA12-ACRE13-AMAZONASFiz 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 dobeginclose;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?GratoAdriano Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Novembro 11, 2005 Autor Denunciar Share Postado Novembro 11, 2005 Poxa já tentei ate usando like e não funcionaprocedure TForm2.BitBtn2Click(Sender: TObject);beginQUERY2.ACTIVE:=TRUE;query2.refresh;with Query2 dobegintryclose;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;exceptbeep;ShowMessage('Erro de SQL!');end;end;end;alguém tem uma dica como fazer isso?Grato pela ajudaT+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wilton Postado Novembro 11, 2005 Denunciar Share Postado Novembro 11, 2005 Qual BD você esta usando?Tente assim:sql.add('select * from tb8munic'); sql.add('where substring(comunicipio,1,2) between "' +Edit2.Text +'" and "'+Edit3.Text+ '"'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Novembro 11, 2005 Autor Denunciar Share Postado Novembro 11, 2005 Ola amigo, tambem já tinha tentado dessa maneira que você postou, talvez por eu estar usando paradox me da erro de SQL, mais valeu pela ajuda.GratoAdriano Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wilton Postado Novembro 11, 2005 Denunciar Share Postado Novembro 11, 2005 Paradox eu só tenho em casa, vou testar a noite... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Novembro 11, 2005 Autor Denunciar Share Postado Novembro 11, 2005 Obrigado mais uma vez amigo pela atençaoAdriano Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Novembro 11, 2005 Autor Denunciar Share Postado Novembro 11, 2005 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 codigobeginwith Query2 dotryclose;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;exceptbeep;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 0Pronto o resultado ficou satisfatorio Obrigado pela força e ajuda amigoAbraçosT+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wilton Postado Novembro 11, 2005 Denunciar Share Postado Novembro 11, 2005 beleza... você só mudou a forma de passar os dados, esta usando parametros. Pode ter sido algum problema com os (),s tb. Mas o importante é que funcionou e tá aí para o pessoal consultar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Novembro 11, 2005 Autor Denunciar Share Postado Novembro 11, 2005 Eu gosto de usar parametros além de deixar o código mais 'limpo', em muitos casos não será necessário preocupar-se com conversões de dados. falou amigoAbraços T+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
adriano_servitec
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
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.