Problemas em capturar valor de MaskEdit.

11/02/2006

0

Boa Noite a todos!
Um aparte do codigo que tenho é assim:
ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsInteger:=StrToInt(MaskEdit2.Text);
ModuloDados.CDS_TabClientes.FieldByName(´CPF´).AsInteger:=StrToInt(MaskEdit3.text);
Isso e no botão Inserir.

Project Sistema.exe raised exception class EConvertError whit message
´33.456.789-0´ is not a valid integer value.´ Process stopped. Use Step or Run to continue.

O EditMask esta formatado com a mascara correspondente acima, sei que o erro e na conversão, mas não sei como resolver! :oops:

Alguem pode me ajudar???


Marcelo_j.

Marcelo_j.

Responder

Posts

11/02/2006

Marco Salles

amigo , este problema é classico e geralmente o a causa e defido a definição da mascara do MaskEdit

como voce a definiu ???


Responder

11/02/2006

Marcelo_j.

Na propriedade EditMask = 00.000.000-0;1;_ do MaskEditRG, e na propriedade EditMask do MaskEditCPF=!000.000.000-00;1;_.

Obrigado.


Responder

11/02/2006

Leandroaoa

ei amigo vc esta tentando passar um campo string para um campos integer no campo integer so aceita numero inteiros
troque os asinteger por asstring;
verifique na sua tabela o tipo deste campos ok

ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsString:=MaskEdit2.Text;
ModuloDados.CDS_TabClientes.FieldByName(´CPF´).AsString:=MaskEdit3.text;


Responder

11/02/2006

Marcelo_j.

Obrigado pela dica.
:lol: Mas colega na minha tabela o campo Rg é Integer, o Campo Cpf é Integer e tenho um campo como datanascimento que é Date.
No campo data do nascimento esta asim: :roll:
ModuloDados.TabCadClientes.FildByName(´DataNascimento´).AsDate:=StrToDateTime(MaskEdit*.text);
este não da o problema de conversão.
Sou novato, e aprendi que toda entrada que o usuário digita no edit e STRING... ou aprendi errado? :oops:

Obrigado pela atenção.


Responder

11/02/2006

Marco Salles

o final 1 da sua mascara significa : ´Salvar Literais´ .. Logo o valor de MaskEdit sera 33.456.789-0 que não é um inteiro
Ao colocar o Final Zero na mascar do MaskEdit o Valor de MaskEditText sera 334567890 que pode ser transformado em um inteiro atraves da função do StrtoInt(MaskEdit1.text)

eu recomendaria isto

 EditMask = 00.000.000-0;0;_ do MaskEditRG, e na propriedade EditMask do MaskEditCPF=!000.000.000-00;0;_. 



Responder

11/02/2006

Marco Salles

eu alem disso eu acho que

ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsString:=MaskEdit2.Text; ModuloDados.CDS_TabClientes.FieldByName(´CPF´).AsString:=MaskEdit3.text;


Mas colega na minha tabela o campo Rg é Integer, o Campo Cpf é Integer e tenho um campo como datanascimento que é Date.


[b:9bc4b67dbe]se quiser fazer como o LeandroAoa sugeriu , tb vai ter que trocar o final da mascara..De qualquer maneira[/b:9bc4b67dbe]

ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsString:=MaskEdit2.Text; //
no seu caso funciona se MaskEdit não conter literais.. etc...
aparentemente se esta trabalhando com string , mas na hora de validar o valor do campo ele ira dar erro se maskEdit1.text , não puder ser convertido...

Enfim , tem-se duas opçoes
ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsString:=MaskEdit2.Text;
ModuloDados.CDS_TabClientes.FieldByName(´RG´).Asinteger:=strtoint(MaskEdit2.Text);
[b:9bc4b67dbe]Em ambas as situaçoes o valor de maskEdit é um valor que pode ser convertido para inteiro[/b:9bc4b67dbe]


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar