Mon projet Delphi contient des données d'accès TAdoQuery sur un serveur MS Sql Server 2014 et TClientDataSet qui reçoit les données AdoQuery via un TDataSetProvider. Ceci est créé à partir d'un modèle de projet que j'ai mis en place.TClientDataSet.ApplyUpdates() n'applique pas les mises à jour
Normalement, j'ai trouvé que cette configuration fonctionnait correctement, mais avec ce projet particulier, j'ai un problème: ApplyUpdates() échoue silencieusement et les données Sql Server ne sont pas mises à jour. Dans mon projet de débogage dépouillé, le seul code je, à l'exception d'un gestionnaire bouton-clic, qui appelle, est la suivante:
procedure TForm1.ApplyUpdates;
var
Errors : Integer;
begin
Errors := ClientDataSet1.ApplyUpdates(0);
Caption := IntToStr(Errors) + '/' + IntToStr(ClientDataSet1.ChangeCount);
end;
Après cette exécute, la légende du formulaire doit être 0/0
bien sûr, mais ce qu'il dit réellement est 0/1
. Donc, sur le visage de celui-ci, aucune erreur ne s'est produite mais les CDS ChangeCount
n'a pas été remis à zéro comme il se doit. Mon q est, comment ApplyUpdates ne retourner aucune erreur, mais le jeu de données du serveur n'est pas mis à jour.
Fwiw, j'ai ajouté l'affichage ChangeCount dans le cadre de mon effort pour déboguer le problème. Mais je crains de ne pas avoir été capable de suivre ce qui est censé se passer dans les détails de la "conversation" entre DataSetProvider et son DataSet pour appliquer les mises à jour sur le serveur.
Avez-vous ajouté du code pour le gestionnaire d'erreurs OnReconcileError? – mjn