Il progetto My Delphi dispone di dati di accesso TAdoQuery su un server MS Sql Server 2014 e TClientDataSet che riceve i dati AdoQuery tramite un TDataSetProvider. Questo viene creato da un modello di progetto che ho impostato.TClientDataSet.ApplyUpdates() non applica gli aggiornamenti
Normalmente, ho trovato questo set-up per funzionare senza problemi, ma con questo particolare progetto sto avendo un problema: ApplyUpdates() fallisce silenziosamente e i dati del server Sql non vengono aggiornati. Nel mio ridotta progetto di debug, l'unico codice che ho, a parte un gestore del pulsante del mouse, che lo chiama, è:
procedure TForm1.ApplyUpdates;
var
Errors : Integer;
begin
Errors := ClientDataSet1.ApplyUpdates(0);
Caption := IntToStr(Errors) + '/' + IntToStr(ClientDataSet1.ChangeCount);
end;
Dopo questo viene eseguito, la didascalia del modulo dovrebbe essere 0/0
, naturalmente, ma quello che in realtà dice è 0/1
. Quindi, a prima vista, non si sono verificati errori ma i CDS ChangeCount
non sono stati ripristinati a zero come dovrebbe essere. La mia q è, in che modo ApplyUpdates non restituisce errori, ma il set di dati del server non viene aggiornato.
Fwiw, ho aggiunto il display ChangeCount come parte del mio impegno per il debug del problema. Ma temo di non essere stato in grado di seguire ciò che dovrebbe succedere nei dettagli della "conversazione" tra DataSetProvider e il suo DataSet per applicare gli aggiornamenti sul server.
Hai aggiunto il codice per il gestore errori OnReconcileError? – mjn