Ajuda  Calendário  Lista de Membros  Pesquisar  Portal
 Portal  Pesquisar  Lista de Membros  Calendário
Olá, Visitante!  Registrar  Entrar

Erro: Column cannot be repeated in update statement


Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
 
#1
Parceiros, estou fazendo assim para editar um registro.
Se eu clicar no botão e editar a 1ª vez, funciona OK.
Mas se eu tentar editar novamente, sem fechar o formulário
dá erro de " FireDac erro column TCONTA.TITULAR cannot be repeated in update statement".

Como se eu estivesse executando um upadete no mesmo campo duas vezes.

Segui rigorosamente o exemplo da pasta FireDac sem Dataset.

Posso postar o exemplo que fiz. Caso alguém se disponha a me ajudar. 

Muito obrigado.

Código:
function TfrmCadConta.Save: Boolean;
var
  objConta: TCONTA;
begin
 objConta := TCONTA.Create;
try
      objConta := oMasterList.Items[dsQuery.DataSet.RecNo -1];
      oMaster.Modify(objConta);

      objConta.FK_BANCO             := Integer(cbbBanco.items.objects[cbbBanco.ItemIndex]);
      objConta.TITULAR              := edtTitular.Text;
      objConta.AGENCIA              := edtNumAgencia.Text;
      objConta.CONTA                := edtConta.Text;
      objConta.BANCO_NOME           := cbbBanco.Text;
    try
      oMaster.Update(objConta);
      Result := True;
    except
      Result := False;
       raise Exception.Create(ErrorEdit);
    end;
finally
    objConta.Free;
end;

 Responder
#2
(05-07-2018, 04:33 PM) Cassiano Escreveu: Parceiros, estou fazendo assim para editar um registro.
Se eu clicar no botão e editar a 1ª vez, funciona OK.
Mas se eu tentar editar novamente, sem fechar o formulário
dá erro de " FireDac erro column TCONTA.TITULAR cannot be repeated in update statement".

Como se eu estivesse executando um upadete no mesmo campo duas vezes.

Segui rigorosamente o exemplo da pasta FireDac sem Dataset.

Posso postar o exemplo que fiz. Caso alguém se disponha a me ajudar. 

Muito obrigado.

Código:
function TfrmCadConta.Save: Boolean;
var
  objConta: TCONTA;
begin
 objConta := TCONTA.Create;
try
      objConta := oMasterList.Items[dsQuery.DataSet.RecNo -1];
      oMaster.Modify(objConta);

      objConta.FK_BANCO             := Integer(cbbBanco.items.objects[cbbBanco.ItemIndex]);
      objConta.TITULAR              := edtTitular.Text;
      objConta.AGENCIA              := edtNumAgencia.Text;
      objConta.CONTA                := edtConta.Text;
      objConta.BANCO_NOME           := cbbBanco.Text;
    try
      oMaster.Update(objConta);
      Result := True;
    except
      Result := False;
       raise Exception.Create(ErrorEdit);
    end;
finally
    objConta.Free;
end;



Fiz o teste com o exemplo citado, e funcionou perfeitamente, reveja seu código, não está assim rigorosamente como o código do exemplo, a não ser que vc esteja com o exemplo diferente do atual no repositório.

Execute o exemplo do ORMBr, e veja vc mesmo :

Comente o código:
// oMasterUpd.detail.Add(Tdetail.Create);
// oMasterUpd.detail.Last.detail_id := 3;
// oMasterUpd.detail.Last.master_id := oMasterUpd.master_id;
// oMasterUpd.detail.Last.lookup_id := 1;
// oMasterUpd.detail.Last.price := 556.88;
// oMasterUpd.detail.Last.lookup_description := 'UDATE VIA CASDACE';

Mude o "edtMaster_Descricao" e clique no botão Update, repita a mudança em seguida clique novamente no botão Update e ai me fala se funciona.
--------------------------------
Isaque Pinheiro
Projeto ORM Brasil
 Responder
#3
(05-07-2018, 06:10 PM) Isaque Pinheiro Escreveu:
(05-07-2018, 04:33 PM) Cassiano Escreveu: Parceiros, estou fazendo assim para editar um registro.
Se eu clicar no botão e editar a 1ª vez, funciona OK.
Mas se eu tentar editar novamente, sem fechar o formulário
dá erro de " FireDac erro column TCONTA.TITULAR cannot be repeated in update statement".

Como se eu estivesse executando um upadete no mesmo campo duas vezes.

Segui rigorosamente o exemplo da pasta FireDac sem Dataset.

Posso postar o exemplo que fiz. Caso alguém se disponha a me ajudar. 

Muito obrigado.

Código:
function TfrmCadConta.Save: Boolean;
var
  objConta: TCONTA;
begin
 objConta := TCONTA.Create;
try
      objConta := oMasterList.Items[dsQuery.DataSet.RecNo -1];
      oMaster.Modify(objConta);

      objConta.FK_BANCO             := Integer(cbbBanco.items.objects[cbbBanco.ItemIndex]);
      objConta.TITULAR              := edtTitular.Text;
      objConta.AGENCIA              := edtNumAgencia.Text;
      objConta.CONTA                := edtConta.Text;
      objConta.BANCO_NOME           := cbbBanco.Text;
    try
      oMaster.Update(objConta);
      Result := True;
    except
      Result := False;
       raise Exception.Create(ErrorEdit);
    end;
finally
    objConta.Free;
end;



Fiz o teste com o exemplo citado, e funcionou perfeitamente, reveja seu código, não está assim rigorosamente como o código do exemplo, a não ser que vc esteja com o exemplo diferente do atual no repositório.

Execute o exemplo do ORMBr, e veja vc mesmo :

Comente o código:
//  oMasterUpd.detail.Add(Tdetail.Create);
//  oMasterUpd.detail.Last.detail_id := 3;
//  oMasterUpd.detail.Last.master_id := oMasterUpd.master_id;
//  oMasterUpd.detail.Last.lookup_id := 1;
//  oMasterUpd.detail.Last.price := 556.88;
//  oMasterUpd.detail.Last.lookup_description := 'UDATE VIA CASDACE';

Mude o "edtMaster_Descricao" e clique no botão Update, repita a mudança em seguida clique novamente no botão Update e ai me fala se funciona.


Olá Isaque. Testei e aconteceu a mesma coisa. Tenho certeza que estou fazendo coisa errada.

Tentei postar um anexo compactado aqui, já com o DB mas a plataforma não permitiu. 

Tem outra forma que eu poderia postar esse projeto teste?

Obrigado amigão. Fica com Deus!!!
 Responder
 
 
Saltar Fórum:

usuários a ver este tópico: 1 Visitante(s)