dataset-serialize icon indicating copy to clipboard operation
dataset-serialize copied to clipboard

Como atualizar e inserir registros utilizando o LoadFromJson

Open UnisystemGIT opened this issue 1 week ago • 0 comments

Problema: Estou tentando inserir registros novos e alterar registro existente quando já existe na tabela. Segundo a documentação (imagem abaixo) eu posso passar o atributo "object_state": "MODIFIED" no JSON que será responsável para alterar os registros ao utilizar o LoadFromJson

  • Utilizando o Banco de Dados Oracle

Utilizando a documentação como exemplo: image

Meu JSON de teste: [ { "object_state": "MODIFIED", "seqPlaCliente": "7297455801", "nomeCliente": "Usuario 01", "clientesenderecos": [ { "seqPlaEndereco": "7297455901", "seqPlaCliente": "7297455801", "descEndereco": "RUA TESTE 01" }, { "seqPlaEndereco": "7297456001", "seqPlaCliente": "7297455801", "descEndereco": "RUA TESTE 02" }, { "seqPlaEndereco": "7297456101", "seqPlaCliente": "7297455801", "descEndereco": "RUA TESTE 03" } ] } ]

Ao clicar no botão "LoadFromJson" ele executa o seguinte código abaixo image

  • Estou utilizando o Master source para fazer a ligação entre os Clientes e Endereços
  • Após carregar os dados da imagem acima, ele exibe minha aplicação

image

Olhando no código da unit DataSet.Serialize.Import, verifiquei que ele olha o KeyFields e ProviderFlags da query (não estava descrito na documentação). Fiz as configurações nas duas queries, informando quais são as chaves primarias de cada tabela respectivamente image

Por fim, ao clicar no botão "Gravar Banco" ele executa o seguinte código abaixo image

Caso todos os registros da query sejam novos, ele está inserindo corretamente. Contudo, caso tenha qualquer alteração ele não altera e gera um erro no "CommitUpdates" indicando um erro do oracle de chave primaria já utilizada. Logo, ele não está funcionando para alterações

UnisystemGIT avatar Jun 26 '24 14:06 UnisystemGIT