Se eu entendi bem, na primeira alteração funciona e nas subsequentes 
não, correto?
Já tentou dar um refresh no clientdataset?

Alexandre

Renato Lorandi escreveu:
>
> Olá pessoal bom dia!
>
> Galera uso delphi 7 com os componentes da paleta dbx... ClientDataSet 
> + SqlQuery + DatasetProvider e DataSource.... o que acontece é o 
> seguinte. eu tenho uma tela de cadastro de clientes, por ex: Nome, 
> telefone, rua etc....
>
> eu tenho uma tabela de pessoas, onde nesta tabela possuo uma chave 
> estrangeira para a tabela de endereços....... Então na minha tela eu 
> uso tudo dbedit, ou seja quando estou navegando entre os pacientes se 
> eu editar um campo por ex o campo nome a tabela pessoa entra em modo 
> de edição, ai quando dou um post ele grava blz....
>
> o que esta acontencendo é o seguinte... o form de cadastro de 
> pacientes é uma herança de um form pai que criei, então no form pai no 
> botão gravar eu tenho esse codigo, que é igual a todos os outros ...
>
> procedure TFrmCadastrosPai.SpeedButton2Click(Sender: TObject);
> begin
>
> //CDEndereco = ClientDataSet para a tabela endereço........
>
> IF(CDEndereco.State in [dsEdit, dsInsert]) Then
> begin
> try
> CDEndereco.Post;
> CDEndereco.ApplyUpdates(0);
> except
> on e: EDatabaseError do
> begin
> ShowMessage('Erro:'+ E.Message);
> abort;
> end;
> on e:Exception do
> begin
> ShowMessage('Erro:'+ E.Message);
> abort;
> end;
> end;
> end;
>
> no form de clientes que é uma herança desse form ai de cima o código é 
> especifico no botão gravar fica assim..
>
> procedure TFrmCadastrosPaciente.SpeedButton2Click(Sender: TObject);
> var
> codigo:Integer;
> begin
> inherited;
>
> IF(CDPessoas.State in [dsEdit, dsInsert]) Then
> begin
> //ADICIONA VALORES ESPECIFICOS PARA O PACIENTE.
> CDPessoas.FieldByName('TIPO_PESSOA').AsString:='P';
> CDPessoas.FieldByName('ATIVO').AsString:='1';
> CDPessoas.FieldByName('TIPO_PESSOA_FJ').AsString:='F';
> try
> CDPessoas.Post;
> CDPessoas.ApplyUpdates(0);
> except
> on e:Exception do
> begin
> showMessage('Erro:'+ e.Message);
> CDPessoas.Cancel;
> abort;
> exit;
> end;
> end;
> end;
> If MessageDlg('Deseja Inserir Novo 
> Registro?',mtConfirmation,[mbyes,mbNo],0) = mryes Then
> begin
> EditConvenio.Text:='';
> edtBairro.Text:='';
> edtCidade.Text:='';
> CDPessoas.Refresh;
> CDPessoas.Last;
> codigo:=CDPessoas.FIELDBYNAME('PESSOA_ID').AsInteger;
> CDPessoas.Insert;
> edtcodigo.Text:=intToStr(codigo + 1);
> end;
> end;
>
> Bom vamos ao problema o que acontece é o seguinte estou na tela de 
> cadastro estou vendo o cliente Renato, bom vou la e edito o telefone 
> do renato e dou um gravar blz ele altera sem problemas, agora estou na 
> mesma tela e altero a rua do renato e dou um gravar ele não da erro 
> mas não muda.... ai executei a partir do delphi mesmo e quando ele 
> chega no CDEndereco.ApplyUpdates(0); ele da erro dizendo que não 
> encontrou registo que a chave não esta especificada, ve se pode um 
> negocio desses, e no select que faço estou puxando todos os campos 
> dessa tabela endereço.... veja bem é só quando vou editar o endereço 
> na tela de cadastro que não altera nada, que é o primeiro codigo la em 
> cima...
>
> bom fico no aguardo de vc's não consegui achar o problema ate agora
>
> valeu.....
>
> __________________________________________________
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.com/ <http://br.messenger.yahoo.com/>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  

Responder a