função não executa

12/03/2013

1

Amigos,
Uso uma biblioteca de funções e na mesma existe a função RemoveAlfa(Retirar caracteres que não sejam numéricos), ao debugar vejo que a mesma não é executada, veja o código:

procedure TFrmCadAluno.BtnSalvarClick(Sender: TObject);
begin
(*só irá cadastrar o Aluno quando for inserção *)
If TForm(self).tag = 0 then
IBQryAlunoEscola.AsString := sEscola;

If not Mensagem('Deseja Gravar o Aluno?') then
Exit;

RemoveAlfa( dbEdtCPF.text );

if not TestaCPF( dbEdtCPF.text ) then
begin
ShowMessage('CPF do Aluno Inválido, Verifique e Tente Novamante!');
PcAluno.ActivePageIndex := 1;
dbEdtCPF.SetFocus;
Exit;
end;

IBQryAluno.Post;
end,
Responder

Posts

12/03/2013

Daniel Santos

Bom, pelo jeito seu Mensagem esta retornando false direto, por isso nem desce!

Eu começaria por ai!
Responder
Amigos,
Uso uma biblioteca de funções e na mesma existe a função RemoveAlfa(Retirar caracteres que não sejam numéricos), ao debugar vejo que a mesma não é executada, veja o código:

procedure TFrmCadAluno.BtnSalvarClick(Sender: TObject);
begin
(*só irá cadastrar o Aluno quando for inserção *)
If TForm(self).tag = 0 then
IBQryAlunoEscola.AsString := sEscola;

If not Mensagem('Deseja Gravar o Aluno?') then
Exit;

RemoveAlfa( dbEdtCPF.text );

if not TestaCPF( dbEdtCPF.text ) then
begin
ShowMessage('CPF do Aluno Inválido, Verifique e Tente Novamante!');
PcAluno.ActivePageIndex := 1;
dbEdtCPF.SetFocus;
Exit;
end;

IBQryAluno.Post;
end,


dbEditCPF.text:= RemoveAlfa( dbEdtCPF.text );

O colega já tentou assim?

Veja se funciona.

Boa sorte e bons códigos!
Responder
Olá.

Bem colocado a reposta acima.

Para usar RemoveAlfa( dbEdtCPF.text ) dessa forma, você deverá criar como procedimento e não função.

E na construção do procedimento use RemoveAlfa(var s:string);

At.
Responder

12/03/2013

Osmar

Amigos,
Agradeço a ajuda de todos.

Martins testei sua dica e não funcionou, então percebi que a função só funciona com edit, mas estou usando dbedit e passo para o dbedit conforme o código abaixo, pergunto se os amigos não tem uma função que possa funcionar neste caso.

procedure TFrmCadAluno.FormCreate(Sender: TObject);
begin
dbEdtCPF.Field.EditMask:= '000-000-000-00;1;_';
end,
Responder
Passe o retorno da função direto para campo no DATASET (se estiver em modo de edição).

MeuDataSet.fieldByName('Campo').asString := RemoveAlpha(dbeditCPF.text);

At.
Responder

12/03/2013

Osmar

Macário,
Não sei se você observou, mas no primeiro código que postei preciso retirar os caracteres não numéricos para depois fazer o teste do CPF.
Responder
Macário,
Não sei se você observou, mas no primeiro código que postei preciso retirar os caracteres não numéricos para depois fazer o teste do CPF.


Uma questão, é, você salva a informação formatada?

Se você guarda a informação formatada, faça a chamada de RemoveAlpha dentro da TestarCPF fazendo uso de variáveis internas.


Responder

12/03/2013

Osmar

Macário,
Não entendi bem, daria para você fazer o código?
Responder

12/03/2013

Osmar

Macário,
Eu estou tentando salvar apenas os números.
Responder

12/03/2013

Osmar

Macário,
Eu estou tentando salvar apenas os números.


esta é a função que uso.

function RemoveAlfa(Texto: string): string;
var iCont : Integer;
sTexto: string;
begin
sTexto := '';
for iCont := 1 to Length( Texto ) do
begin
if Texto[iCont] in ['0'..'9'] then
sTexto := sTexto + Texto[iCont];
end;
Result := sTexto;
end;
Responder

12/03/2013

Osmar

Amigos,

Descobri que várias funções que encontrei na net funcionam desde que retire a máscara que estou passando para o dbedit:

procedure TFrmCadAluno.FormCreate(Sender: TObject);
begin
dbEdtCPF.Field.EditMask:= '000-000-000-00;1;_';
end,

Responder
Amigos,

Descobri que várias funções que encontrei na net funcionam desde que retire a máscara que estou passando para o dbedit:

procedure TFrmCadAluno.FormCreate(Sender: TObject);
begin
dbEdtCPF.Field.EditMask:= '000-000-000-00;1;_';
end,



Foi lhe perguntado se você salva o CPF formatado no banco, não lembro de se você respondeu, mas independente disso, você poderia usar uma váriável para resolver seu problema.

Suponhamos que seu código de validação do campo CPF esteja no OnExit do DBEdit formatado com a mascara.
procedure TFrmXXX.DBEdtCPFExit(Sender: TObject);
var
  CPF: String;
begin
  CPF := RemoveAlpha(DBEdtCPF.Text);
  if ValidaCPF(CPF) then
     ShowMessage('CPF válido!')
  else
     ShowMessage('O CPF informado '+ CPF +' é inválido! Tente novamente.');
end;



Boa sorte e bons códigos!
Responder

12/03/2013

Osmar

Beleza Martins, agora funcionou, veja como ficou:

CPF := RemoveAlfa(DBEdtCPF.Text);
if not TestaCPF(CPF) then
begin
ShowMessage('O CPF informado '+ CPF +' é inválido! Verifique e Tente novamente!');
PcAluno.ActivePageIndex := 1;
dbEdtCPF.SetFocus;
exit;
end;
Responder

12/03/2013

Osmar

Beleza Martins, agora funcionou, veja como ficou:

CPF := RemoveAlfa(DBEdtCPF.Text);
if not TestaCPF(CPF) then
begin
ShowMessage('O CPF informado '+ CPF +' é inválido! Verifique e Tente novamente!');
PcAluno.ActivePageIndex := 1;
dbEdtCPF.SetFocus;
exit;
end;


Gostaria de agradecer a todos que tentaram ajudar e que DEUS os abençoe.
Responder
Beleza Martins, agora funcionou, veja como ficou:

CPF := RemoveAlfa(DBEdtCPF.Text);
if not TestaCPF(CPF) then
begin
ShowMessage('O CPF informado '+ CPF +' é inválido! Verifique e Tente novamente!');
PcAluno.ActivePageIndex := 1;
dbEdtCPF.SetFocus;
exit;
end;


Gostaria de agradecer a todos que tentaram ajudar e que DEUS os abençoe.


Obrigado pelo feedback, para nós que somos usuários do fórum, tanto os mais recentes quanto os veteranos (2003 - fórum antigo) é sempre um prazer poder ajudar.

Boa sorte e bons códigos!
Responder