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
Ao clicar no botão "LoadFromJson" ele executa o seguinte código abaixo
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
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
Por fim, ao clicar no botão "Gravar Banco" ele executa o seguinte código abaixo
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
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:
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
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
Por fim, ao clicar no botão "Gravar Banco" ele executa o seguinte código abaixo
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