Fórum Filtrar somente os 4 primeiros numeros do campo? #301020
27/10/2005
0
Tem possibilidade de fazer um filtro dentro de um campo que esta com o cadastro assim:
00010001
00010002
00020001
00030001
00030002
00040001
00050001
00050002
00050003
Ai tenho 02(dois) edits um chamado editini e outro editfim, entao no editini digitar 0001 e no editfim 0003, e no dbgrid aparecer somente os dados digitados assim:
00010001
00010002
00020001
00030001
00030002
Agradeço a ajuda de todos
Obrigado
ADRIANO
Adriano_servitec
Curtir tópico
+ 0Posts
27/10/2005
Adriano_servitec
procedure TForm1.BitBtn11Click(Sender: TObject);
begin
QUERY3.ACTIVE:=TRUE;
query3.refresh;
with Query3 do
begin
close;
sql.clear;
sql.add(´select * from dpfuncs´);
sql.add(´WHERE (fco >= ´ + quotedstr(Edit23.Text + ´0000´) + ´ ) and (fco <= ´ + quotedstr(Edit24.Text + ´9999´) + ´ )´);
open;
end;
end;
Gostei + 0
28/10/2005
Adriano_servitec
00010001
00010002
00010003
No edit1 digitar 0001 e no edit2 digitar 0002 e no dbgrid aparecer assim
00010001
00010002
Esse de pegar os 4 numeros finais ta mais complicado
Alguem tem alguma ideia?
Agradeço a ajuda de todos
Obrigado
ADRIANO
Gostei + 0
28/10/2005
Adriano_servitec
Gostei + 0
28/10/2005
Emerson Nascimento
Gostei + 0
28/10/2005
Emerson Nascimento
pegar do inicio:
´select * from dpfuncs where ´+
´substring(fco from 1 for 4) between ´+
quotedstr(Edit23.Text)+´ and ´+quotedstr(Edit24.Text)
pegar do fim:
´select * from dpfuncs where ´+
´substring(fco from 5 for 4) between ´+
quotedstr(Edit23.Text)+´ and ´+quotedstr(Edit24.Text)
Gostei + 0
28/10/2005
Adriano_servitec
Pode me dar uma ajudinha amigo como faço o like pq nao compila, so consigo usar ele dentro da SQL da query
Olha como fiz
procedure TForm1.Button4Click(Sender: TObject);
begin
QUERY3.ACTIVE:=TRUE;
query3.refresh;
with Query3 do
begin
close;
sql.clear;
sql.add(´select * from dpfuncs´);
//SQL.ADD(´where substring(fco from 5 for 4) between ´ + quotedstr(Edit18.Text) +´ and ´+quotedstr(Edit19.Text)´);//aqui nao consegui
sql.add(´WHERE FNo = like ´¬0001´ OR FNO = LIKE ´¬0003´´); //aqui no ligar 0001 a 0003 tem como colocar edit1.text a edit2.text, pois la que vou digitar os codigos para serem filtrados entre esse intervalo
open;
end;
end;
Gostei + 0
28/10/2005
Adriano_servitec
Tava assim
SQL.ADD(´where substring(fco from 5 for 4) between ´ + quotedstr(Edit18.Text) +´ and ´+quotedstr(Edit19.Text)´);
Ai corrigi o final colocando + ´´ para fechar
SQL.ADD(´where substring(fco from 5 for 4) between ´ + quotedstr(Edit18.Text) +´ and ´+quotedstr(Edit19.Text)+ ´´);
Valeu amigao, obrigado.
Mais pq da erro aqui na ora de compilar e no SQL do Query nao
sql.add(´WHERE FNo = like ´¬0001´ OR FNO = LIKE ´¬0003´´);
Fica apontando no ´¬0001´ ai nao compila, O q ta errado?
Gostei + 0
28/10/2005
Firekiller
´WHERE FNo = like ´¬0001´
deveria ficar assim:
´WHERE FNo like ´¬0001´
Quando você for usar o like, não precisxar por o sinal de igual.
Gostei + 0
28/10/2005
Emerson Nascimento
eu faria assim:
procedure TForm1.Button4Click(Sender: TObject); begin //para pegar do início: with Query3 do begin close; sql.text := ´select * from dpfuncs ´+ ´where substring(fco from 1 for 4) between :inicio and :fim ´; parambyname(´inicio´).asstring := Edit18.Text; parambyname(´fim´).asstring := Edit19.Text; open; end; //para pegar do fim: with Query3 do begin close; sql.text := ´select * from dpfuncs ´+ ´where substring(fco from 5 for 8) between :inicio and :fim ´; parambyname(´inicio´).asstring := Edit18.Text; parambyname(´fim´).asstring := Edit19.Text; open; end; end;
Gostei + 0
28/10/2005
Adriano_servitec
Valeu mesmo, me ajudou muito
Gostei + 0
11/11/2005
Adriano_servitec
Boa tarde amigos, o problema agora eh 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. Entao na tabela esta assim
11-RONDONIA
1100015-ALTA FLOTESTA
12-ACRE
1200013-ACRELANDIA
13-AMAZONAS
1300029-ALVARES
Bom entao 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
Preciso de uma ideia como se faz isso em SQL ja tentei usar o like e nao consegui, e tambem tentei de diversas formas, e nada ainda
Eis o codigo
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;
Alguem tem uma ideia como me ajudar?
Grato
Adriano
Gostei + 0
11/11/2005
Emerson Nascimento
procedure TForm2.BitBtn2Click(Sender: TObject); 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 3 for 1) = :traco)´); ParamByName(´Vcini´).Value:= Edit2.Text; ParamByName(´Vcfim´).Value:= Edit3.Text; ParamByName(´Traco´).Value:= ´-´; open; except beep; ShowMessage(´Erro de SQL!´); end; end;
desde que seja garantido que em Edit2 e Edit3 serão digitados apenas 2 dígitos. caso contrário deve ser alterado o parâmetro da função substring()
veja se isso funciona. faz muito tempo que eu não trabalho com paradoidox....
Gostei + 0
11/11/2005
Adriano_servitec
Grato pela ajuda
Adriano
Gostei + 0
11/11/2005
Adriano_servitec
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) entao foi so fazer um sbstring do 7 ao 3 sendo menor que 0
Pronto o resultado ficou satisfatorio
Agradeço mais uma vez por ter me ajudado
Obrigado amigo
Abraços
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)