Array
(
)

Problemas em capturar valor de MaskEdit.

Marcelo_j.
   - 11 fev 2006

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???


Marco Salles
   - 11 fev 2006

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

como voce a definiu ???


Marcelo_j.
   - 11 fev 2006

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

Obrigado.


Leandroaoa
   - 11 fev 2006

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;


Marcelo_j.
   - 11 fev 2006

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.


Marco Salles
   - 11 fev 2006

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

#Código

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



Marco Salles
   - 11 fev 2006

eu alem disso eu acho que


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



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


se quiser fazer como o LeandroAoa sugeriu , tb vai ter que trocar o final da mascara..De qualquer maneira

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
#Código

ModuloDados.CDS_TabClientes.FieldByName(´RG´).AsString:=MaskEdit2.Text;
ModuloDados.CDS_TabClientes.FieldByName(´RG´).Asinteger:=strtoint(MaskEdit2.Text);
Em ambas as situaçoes o valor de maskEdit é um valor que pode ser convertido para inteiro