Dados duplicam ao gravar na tabela (MySQL/Firedac)

Delphi

21/04/2016

Bom dia.

Fiz um gerador de parcelas com um RxMemoryData temporário e as parcelas são geradas normalmente, porém após gravar os dados na tabela verifiquei pelo dbForge que as informações estavam duplicadas. Sinceramente não sei o que está errado, se é alguma configuração no FDQuery ou outra configuração qualquer. Abaixo segue o código para gravação dos dados:

rxPARC.First; 
  while not rxPARC.Eof do 
  begin 
    // Dados Comuns 
    dmdados.qryCReceber.Append; 

   qryCRecebercr_nrocompra.Value             := iNroCompra; 
    dmdados.qryCRecebercr_cli_id.Value        := StrToInt(edtCODI.Text); 
    dmdados.qryCRecebercr_dtcompra.Value      := edtDCOM.Date; 
    dmdados.qryCRecebercr_totalcompra.Value   := edtTOTA.Value; 
    dmdados.qryCRecebercr_saldo.Value         := edtTOTA.Value; 
    dmdados.qryCRecebercr_descricao.Value     := edtDESC.Text; 
    dmdados.qryCRecebercr_juros.Value         := edtJURP.Value; 
    dmdados.qryCRecebercr_juros_val.Value     := edtJURV.Value; 
    dmdados.qryCRecebercr_desconto.Value      := edtJURP.Value; 
    dmdados.qryCRecebercr_desconto_val.Value  := edtJURV.Value; 
    dmdados.qryCRecebercr_condpag_id.Value    := StrToInt(lblCPAG.Caption); 
    dmdados.qryCRecebercr_totalparcelas.Value := edtNPAR.Value; 
    dmdados.qryCRecebercr_intervalo.Value     := edtINTE.Value; 
    dmdados.qryCRecebercr_dia_fixo.Value      := edtDFIX.value; 
    dmdados.qryCRecebercr_total_geral.Value   := edtVFIM.Value; 
    dmdados.qryCRecebercr_quitado.Value       := 'N'; 

    // Parcelas 
    dmdados.qryCRecebercr_nroparcela.Value    := strtoint(rxPARCNroParc.Value); 
    dmdados.qryCRecebercr_valparcela.value    := rxPARCValor.Value; 
    dmdados.qryCRecebercr_dtvenc.Value        := rxPARCVencimento.Value; 

    dmdados.qryCReceber.Post; 
    dmdados.qryCReceber.ApplyUpdates(0); 

    rxPARC.Delete; 
  end; 



Como podem ver, no final do loop estou utilizando o rxPARC.Delete, assim a cada registro gravado na tabela real, o registro da tabela temporária é apagado. Anteriormente estava utilizando rxPARC.Next, mas dos 2 modos os dados ficam duplicados.

Até o momento, a única maneira que encontrei de evitar a duplicidade foi fechar e abrir a tabela original a cada registro gravado. Fazendo um teste gerei 20 parcelas, e o que deveria ser num piscar de olhos demorou uns 15s.

Ah, o CachedUpdates está True.

Será que mesmo após o ApplyUdates ainda fica algum dado em memória?

É isso, espero que possam me ajudar.

Grato

Marcos
Marcos

Marcos

Curtidas 0
POSTAR