[delphi-br] Problemas com update

2007-01-23 Por tôpico Renato Lorandi
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/ 

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Problemas com update

2007-01-23 Por tôpico Alexandre Pedroto
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]

  



Res: [delphi-br] Problemas com update

2007-01-23 Por tôpico Renato Lorandi
não, não é isso amigo, a mudança nos dados do endereço que é da tabela endereço 
não funciona nem na primeira vez que se tenta não...


- Mensagem original 
De: Alexandre Pedroto [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Terça-feira, 23 de Janeiro de 2007 13:39:23
Assunto: Re: [delphi-br] Problemas com update

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. SpeedButton2Clic k(Sender: TObject);
 begin

 //CDEndereco = ClientDataSet para a tabela endereço. ...

 IF(CDEndereco. State in [dsEdit, dsInsert]) Then
 begin
 try
 CDEndereco.Post;
 CDEndereco.ApplyUpd ates(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 TFrmCadastrosPacien te.SpeedButton2C lick(Sender: TObject);
 var
 codigo:Integer;
 begin
 inherited;

 IF(CDPessoas. State in [dsEdit, dsInsert]) Then
 begin
 //ADICIONA VALORES ESPECIFICOS PARA O PACIENTE.
 CDPessoas.FieldByNa me('TIPO_ PESSOA'). AsString: ='P';
 CDPessoas.FieldByNa me('ATIVO' ).AsString: ='1';
 CDPessoas.FieldByNa me('TIPO_ PESSOA_FJ' ).AsString: ='F';
 try
 CDPessoas.Post;
 CDPessoas.ApplyUpda tes(0);
 except
 on e:Exception do
 begin
 showMessage( 'Erro:'+ e.Message);
 CDPessoas.Cancel;
 abort;
 exit;
 end;
 end;
 end;
 If MessageDlg(' Deseja Inserir Novo 
 Registro?',mtConfir mation,[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.ApplyUpd ates(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]

 




__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]