lailly 0 Denunciar post Postado Agosto 31, 2008 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
lailly 0 Denunciar post Postado Agosto 31, 2008 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
shini 318 Denunciar post Postado Setembro 1, 2008 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
lailly 0 Denunciar post Postado Setembro 2, 2008 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
shini 318 Denunciar post Postado Setembro 2, 2008 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