| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Mazo1 Aprendiz

Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Qui Fev 20, 2014 10:40 am Assunto: Como limpar caracteres alfa em um dbedit usado para CPF |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Fev 20, 2014 11:02 am Assunto: |
|
|
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 |
|
 |
Mazo1 Aprendiz

Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Qui Fev 20, 2014 12:26 pm Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Fev 20, 2014 3:32 pm Assunto: |
|
|
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 |
|
 |
Mazo1 Aprendiz

Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Qui Fev 20, 2014 3:59 pm Assunto: |
|
|
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 |
|
 |
|