viniciussanchez / dataset-serialize

JSON to DataSet and DataSet to JSON converter for Delphi and Lazarus (FPC)
MIT License
653 stars 161 forks source link

Como atualizar e inserir registros utilizando o LoadFromJson #239

Open UnisystemGIT opened 4 months ago

UnisystemGIT commented 4 months ago

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 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

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