Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lailly

EConvert Error with message " is not a valid integer

Recommended Posts

Olá!

 

Utilizo Delphi 7 + Postgresql+ zeos.

Tô tentando salvar um formulário de cadastro, mas está aparecendo a mensagem ''Exception class EConvert Error with message " is not a valid integer value".

 

No meu botão salvar, tenho o seguinte código:

 

UDados.Dados.Tb_Paciente.Open;

UDados.Dados.Tb_Paciente.Append;

UDados.Dados.Tb_Pacienteprontuario.value:=StrToInt(DEdtProntuario.Text); // integer

if RBSim.Checked = true then

UDados.Dados.Tb_PacienteCasoAnalitico.Value:='S' // varchar(1)

else

UDados.Dados.Tb_PacienteCasoAnalitico.Value:='N';

UDados.Dados.Tb_PacienteNRHC.Value:=EdtNRHC.Text; // varchar(6)

UDados.Dados.Tb_PacienteNomePaciente.Value:=EdtPaciente.Text; // varchar(40)

if RBFeminino.Checked = true then

UDados.Dados.Tb_Pacientesexo.Value:='F' //varchar(1)

else

begin

if RBMasculino.Checked = true then

UDados.Dados.Tb_Pacientesexo.Value:='M'

else

if RBIgnorado.Checked = true then

UDados.Dados.Tb_Pacientesexo.Value:='I';

end; //else

UDados.Dados.Tb_PacienteDtNascimento.Value:=StrToDate(EdtdtNasc.Text); //date

UDados.Dados.Tb_PacienteCPF.Value:=EdtCPF.Text;

UDados.Dados.Tb_Pacientecodclinica.Value:= CBClinEntrada.keyvalue; // integer - chave estrangeira

UDados.Dados.Tb_Paciente.Post;

UDados.Dados.Tb_Paciente.Refresh;

 

Acessei o Postgresql com um select e verifiquei que o sistema salvou os campos prontuario, nrhc, dtnascimento, cpf, codclinica e municipio corretamente. O campo sexo ficou vazio,mesmo setando o radiobutton.

Será que é este campo que está gerando o erro? O único campo que deixei obrigatório para o teste foi a chave primária 'prontuario'.

 

Observei também que está gravando sempre na mesma linha, ou seja, está sobrescrevendo os dados. Devo usar o Insert no lugar do Append?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

A primeira parte do problema já consegui resolver.

Insere um RecordCount assim:

 

UDados.Dados.Tb_Paciente.Open;

if UDados.Dados.Tb_Paciente.RecordCount = 0 then

UDados.Dados.Tb_Paciente.Append;

 

e funcionou. Salva todos os campos corretamente.

 

 

Mas ele só grava os dados na primeira linha sobrescrevendo o anterior. O que pode ser isso??

 

Aguardo ...

:mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que erro seja nessa linha UDados.Dados.Tb_Pacientecodclinica.Value:= CBClinEntrada.keyvalue;

Pq, diz q n consegue converte um valor inteiro, pq o campo ta vazio;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é o codclinica vazio; o campo aparece preenchido. Acredito que tem a ver com a chave primaria 'prontuario', mas não consigo descobrir o que é ...

 

O sistema está sempre sobrescrevendo os dados. Não sei o porquê e se tem a ver com o erro. (??)

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você acha tem algo a ver com a chave primaria? se tivese vazio dava erro de integridade, tira aquele

if UDados.Dados.Tb_Paciente.RecordCount = 0 then

tua PK é autoincxrement???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.