Avaliação do Tópico:
  • 1 votos - 5 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Erro: Column cannot be repeated in update statement
#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
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

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
#4
aproveitando o gancho aqui, estou precisando fazer um insert na minha table detalhe mas esta me retornando um access violation, pelo fato de não esta recebendo a PK da table master.

ta ai no pastbin o fonte do modelo da table master e detalhe

https://pastebin.com/hVc4Rvsb
Responder
#5
(13-02-2019, 10:34 PM)CleitonMaciel Escreveu: aproveitando o gancho aqui, estou precisando fazer um insert na minha table detalhe mas esta me retornando um access violation, pelo fato de não esta recebendo a PK da table master.

ta ai no pastbin o fonte do modelo da table master e detalhe

https://pastebin.com/hVc4Rvsb

Executei o exemplo FireDAC sem DataSet, está funcionando perfeitamente, reveja seu código como base no código dele.

  Isaque Pinheiro
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder


Possíveis Tópicos Relacionados...
Tópico: Autor Respostas: Visualizações: Última Mensagem
  Erro de " Item not found " Geule 3 2,029 27-06-2018, 08:06 PM
Última Mensagem: Osiel Gomes
  Erro depois de atualização (ormbr.typer.blob) Osiel Gomes 1 1,525 15-05-2018, 01:23 PM
Última Mensagem: juliomar
  ERRO AO ABRIR DEMO ORMBrFireDac.dproj - Delphi XE7 willian 1 1,847 17-12-2017, 09:00 PM
Última Mensagem: juliomar

Saltar Fórum:


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