ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como limpar caracteres alfa em um dbedit usado para CPF

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Qui Fev 20, 2014 10:40 am    Assunto: Como limpar caracteres alfa em um dbedit usado para CPF Responder com Citação

Pessoal após pesquisar na net não encontrei nada que resolvesse meu problema, tenho um campo varchar tamanho 11 para CPF, inseri a máscara, mas não consigo retirar os alfa no momento validar e salvar:

Código:

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


Código:

procedure TFrmCadFuncionario.BtnSalvarClick(Sender: TObject);
begin

   RemoveAlfa(dbEdtCPF.text);

  if not TestaCPF( dbEdtCPF.text ) then
  begin
    ShowMessage('CPF do Funcionário Inválido, Verifique e Tente Novamente!');
    dbEdtCPF.SetFocus;
    Exit;
  end;
  IBQryFuncionario.Post;



Código:

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;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Fev 20, 2014 11:02 am    Assunto: Responder com Citação

Bom dia,

A RemoveAlfa que você postou é uma função que retorna somente os números do parâmetro recebido, ela não altera o valor do campo, por isso acredito que ela deva ser utilizada da seguinte forma:

Código:
  if not TestaCPF( RemoveAlfa(dbEdtCPF.text) ) then
  begin
    ShowMessage('CPF do Funcionário Inválido, Verifique e Tente Novamente!');
    dbEdtCPF.SetFocus;
    Exit;
  end;


Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-terreno
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Qui Fev 20, 2014 12:26 pm    Assunto: Responder com Citação

Boa tarde Imex, fiz o teste mas continua dando erro, um detalhe interessante se não inserir nenhum número no campo, salva normal, mas também lembro que, se tirar a mascara também salva normal.
esse é o erro:
size mismatch - field CPF size is too small for data
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Fev 20, 2014 3:32 pm    Assunto: Responder com Citação

Pela mensagem de erro, desconfio que o tamanho do campo CPF no banco de dados não permite a inclusão da máscara.
Se for isso mesmo, experimente alterar a máscara para não gravar a mesma no BD:

Código:
  dbEdtCPF.Field.EditMask:= '000.000.000-00;0;_';


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Qui Fev 20, 2014 3:59 pm    Assunto: Responder com Citação

Caramba! Imex agora funcionou, não sabia que a troca do 1 por 0 evitava a gravação no BD, mas observe que quando postei acima informei que o campo era varchar de 11 posições.

Valeu mais uma vez irmão, muito obrigado, que DEUS ti abençoe.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB