GARANTIR DESCONTO

Fórum Dúvida sobre busca com Locate e FormatFloat #202366

21/12/2003

0

Uso o codigo abaixo para localizar o funcionario em minha tabela, quando eu digito o codigo ele funciona o proble e se eu digitar uma matricula que não exista ele não acha mais passa para outro campo, e so quero que passe se a matricula digitada exister na minha tabela.

if Edit1.Text <> ´´ then
FrmCadastro.ADOQuery1.Locate(´matricula´, Edit1.Text, [lopartialkey, locaseinsensitive])
else
begin
ShowMessage(´Digite a Matrícula´);
edit1.SetFocus;

Minha segunda dúvida e que coloquei este codigo para dar formato ao meu edit1.text mais , quando digito o valor nao funciona da erro, so deixa eu digitar numeros se tiver zero ele nao digita. por favor se alguem souber onde esta o erro agradeço.

edit1.text := FormatFloat(´#0.00´,´StrtoFloat(edit1.text )

Agradeço a todos.


Uoquisala

Uoquisala

Responder

Posts

21/12/2003

Deus

Bem, o primeiro passo para entender o que está havendo no seu if é entender o seu código. Quando você usa

if Edit1.Text <> ´´ then 
  FrmCadastro.ADOQuery1.Locate(´matricula´, Edit1.Text, [lopartialkey, locaseinsensitive]) 
else 
begin 
  ShowMessage(´Digite a Matrícula´); 
  edit1.SetFocus; 
end;


Você está dizendo o seguinte: ´Se o edit for diferente de nulo, então localize o registro. Se não, peça para digitar a matrícula´. E não é isso que você quer, você quer que ´Se o edit for diferente de nulo [b:53b21367ff]e o registro não for localizado[/b:53b21367ff], peça para digitar a matrícula´, e esse código seria:

if (Trim(Edit1.Text) <> ´´) AND NOT (FrmCadastro.ADOQuery1.Locate(´matricula´, Edit1.Text, [lopartialkey, locaseinsensitive])) then 
begin 
  ShowMessage(´Digite a Matrícula´); 
  Edit1.SetFocus;
end;


O segundo caso eu confesso que não entendi o porquê das duas aspas em ´(...) FormatFloat(´#0.00[b:53b21367ff]´,´[/b:53b21367ff]StrtoFloat (...)´, nem entendi em que situação você atribui este valor. Será que não é melhor fazer esta atribuição no [i:53b21367ff]OnExit[/i:53b21367ff] do Edit? Faça apenas a verificação de integridade de dados no [i:53b21367ff]OnKeyPress[/i:53b21367ff], e no [i:53b21367ff]OnExit[/i:53b21367ff] é que você faz a formatação dos dados. Ok? :)

Abraços, dEUS.


Responder

Gostei + 0

21/12/2003

Uoquisala

ele esta aceitando pular quando o campo esta em branco, mais a segunda parte ficou legal so passa se o codigo existir...


Bem, o primeiro passo para entender o que está havendo no seu if é entender o seu código. Quando você usa
if Edit1.Text <> ´´ then 
  FrmCadastro.ADOQuery1.Locate(´matricula´, Edit1.Text, [lopartialkey, locaseinsensitive]) 
else 
begin 
  ShowMessage(´Digite a Matrícula´); 
  edit1.SetFocus; 
end;
Você está dizendo o seguinte: ´Se o edit for diferente de nulo, então localize o registro. Se não, peça para digitar a matrícula´. E não é isso que você quer, você quer que ´Se o edit for diferente de nulo [b:2c03f85d00]e o registro não for localizado[/b:2c03f85d00], peça para digitar a matrícula´, e esse código seria:
if (Trim(Edit1.Text) <> ´´) AND NOT (FrmCadastro.ADOQuery1.Locate(´matricula´, Edit1.Text, [lopartialkey, locaseinsensitive])) then 
begin 
  ShowMessage(´Digite a Matrícula´); 
  Edit1.SetFocus;
end;
O segundo caso eu confesso que não entendi o porquê das duas aspas em ´(...) FormatFloat(´#0.00[b:2c03f85d00]´,´[/b:2c03f85d00]StrtoFloat (...)´, nem entendi em que situação você atribui este valor. Será que não é melhor fazer esta atribuição no [i:2c03f85d00]OnExit[/i:2c03f85d00] do Edit? Faça apenas a verificação de integridade de dados no [i:2c03f85d00]OnKeyPress[/i:2c03f85d00], e no [i:2c03f85d00]OnExit[/i:2c03f85d00] é que você faz a formatação dos dados. Ok? :) Abraços, dEUS.



Responder

Gostei + 0

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

Aceitar