Selecao DevMedia QUERO SER PRIME

Fórum Pesquisa em campo integer com TEdit #331571

19/10/2006

0

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..


Thiago Coleti

Thiago Coleti

Responder

Posts

19/10/2006

Araujojunior

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


Responder

Gostei + 0

19/10/2006

Beto_martini

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.


Responder

Gostei + 0

20/10/2006

Marco Salles

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



Responder

Gostei + 0

20/10/2006

Marco Salles

Desculpe amigo ...

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:


Responder

Gostei + 0

20/10/2006

Pestana

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.


Responder

Gostei + 0

20/10/2006

Thiago Coleti

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..


Responder

Gostei + 0

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

Aceitar