Pesquisa em campo integer com TEdit
Olá Pessoal... estou com um probleminha aki..
tenho uma tabela (postgresql).. e nela tenho um campo integer.... e no form do delphi tenho um TEdit comum.... onde o usuário pode digitar tanto letras quanto numeros.... porém em alguns casos... o delphi ter q fazer uma pesquisa nesse campo integer.... mas o usuário pode ter digitado uma palavra qualquer no TEdit..
Ex:.. o usuário vai lah e digita ´FORUM´... e ele opta pelo sistema fazer a pesquisa no campo integer (as vezes sem saber)...
entaum o q ocorre..quando vou passar o parametro na pesquisa:
query.parambyname(´parametro´).value := TEdit.Text
da erro.. pq o usuário digitou letras e naum numeros.... ou os dois misturados....
tem como eu tratar isso.... se alguem tiver alguma idéia..estou no aguardo..obrigado..
tenho uma tabela (postgresql).. e nela tenho um campo integer.... e no form do delphi tenho um TEdit comum.... onde o usuário pode digitar tanto letras quanto numeros.... porém em alguns casos... o delphi ter q fazer uma pesquisa nesse campo integer.... mas o usuário pode ter digitado uma palavra qualquer no TEdit..
Ex:.. o usuário vai lah e digita ´FORUM´... e ele opta pelo sistema fazer a pesquisa no campo integer (as vezes sem saber)...
entaum o q ocorre..quando vou passar o parametro na pesquisa:
query.parambyname(´parametro´).value := TEdit.Text
da erro.. pq o usuário digitou letras e naum numeros.... ou os dois misturados....
tem como eu tratar isso.... se alguem tiver alguma idéia..estou no aguardo..obrigado..
Thiago Coleti
Curtidas 0
Respostas
Araujojunior
19/10/2006
var
I: Integer;
begin
try
I := Edit.text;
except
on E: Exception do
showmessage(´Valor invalido ´ + E.Message);
end;
esse E.Message vai mostrar o erro
I: Integer;
begin
try
I := Edit.text;
except
on E: Exception do
showmessage(´Valor invalido ´ + E.Message);
end;
esse E.Message vai mostrar o erro
GOSTEI 0
Beto_martini
19/10/2006
Vc. tambem pode tratar a entrada de dados no edit.
Um exemplo bem didático:
No evento OnKeyPress do edit insira o código
Var numeros:string;
begin
numeros:=´0123456789´;
if pos(key,numeros)<1 then
begin
key:=#0;
end;
end;
Com este código o edit só aceitará os dígitos numéricos.
Um exemplo bem didático:
No evento OnKeyPress do edit insira o código
Var numeros:string;
begin
numeros:=´0123456789´;
if pos(key,numeros)<1 then
begin
key:=#0;
end;
end;
Com este código o edit só aceitará os dígitos numéricos.
GOSTEI 0
Marco Salles
19/10/2006
antes de voce proseguir com a pesquisa faça isso:
if StrToInt(edit1.text) Then begin sua pesquisa.... end else inform que contem Letras no Edit
GOSTEI 0
Marco Salles
19/10/2006
Desculpe amigo ...
Troque :
por
Agora sim :lol: :lol:
Troque :
if StrToInt(edit1.text) Then
begin
sua pesquisa....
end
else
inform que contem Letras no Edit
por
var
np:integer;
begin
if TryStrToInt(edit1.Text,np) then
sua opesquisa , mas em alguns casos é conveniente trocar
query.parambyname(´parametro´).value := TEdit.Text por
query.parambyname(´parametro´).asinteger := np;
etc...
end
else
informe que contem Letras no Edit
Agora sim :lol: :lol:
GOSTEI 0
Pestana
19/10/2006
Thiago Coleti as dicas dos colegas dão certo, mas ai vai mais uma dica,
na minha opnião eu utilizaria MaskEdit enves do Edit, com isso vc acrescentaria mascará nos campos que é do tipo integer ou qualquer outro tipo de campo que prescise.
no evento onEnter do MaskEdit vc definiria as mascaras, por ex.:
procedure TfrmPesq.MaskEditEnter (Sender : TObject);
begin
mskedtPesq.Clear;
if cmboxCampo.Text = ´CNPJ´ then // caso vc esteja utilizando um combobox que comtem os campo da tabela.
mskedtPesq.EditMask := ´99.999.999/9999-99;0;_´
else
if cmboxCampo.Text = ´CPF´ then
mskedtPesq.EditMask := ´999.999.999-99;0;_´
else
mskedtPesq.EditMask := ´´; // para campos que não prescisem de mascará.
end;
procedure TfrmPesq.MaskEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
Pesquisar(mskedtPesq.Text); // chama a rotina de pesquisa e envia o parametro.
end;
qualquer coisas posta ai,
flw.
na minha opnião eu utilizaria MaskEdit enves do Edit, com isso vc acrescentaria mascará nos campos que é do tipo integer ou qualquer outro tipo de campo que prescise.
no evento onEnter do MaskEdit vc definiria as mascaras, por ex.:
procedure TfrmPesq.MaskEditEnter (Sender : TObject);
begin
mskedtPesq.Clear;
if cmboxCampo.Text = ´CNPJ´ then // caso vc esteja utilizando um combobox que comtem os campo da tabela.
mskedtPesq.EditMask := ´99.999.999/9999-99;0;_´
else
if cmboxCampo.Text = ´CPF´ then
mskedtPesq.EditMask := ´999.999.999-99;0;_´
else
mskedtPesq.EditMask := ´´; // para campos que não prescisem de mascará.
end;
procedure TfrmPesq.MaskEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
Pesquisar(mskedtPesq.Text); // chama a rotina de pesquisa e envia o parametro.
end;
qualquer coisas posta ai,
flw.
GOSTEI 0
Thiago Coleti
19/10/2006
Olá amigos... muito obrigado pela ajuda de vcs...
por enquanto testei somente a idéia do araujojunior... mais vou testar as outras alternativas e qualquer coisa volto posta..
muito obrigado..
por enquanto testei somente a idéia do araujojunior... mais vou testar as outras alternativas e qualquer coisa volto posta..
muito obrigado..
GOSTEI 0