Bonjour,
dans le cadre d'un programme j'utilise une table mémoire que je remplie en fonction d'une requête dans un BDD
Jusque là pas de soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Datas.Produits.CopyDataSet(Datas.GQuery, [coRestart, coAppend]);
Maintenant, connaissant mes utilisateurs, je me suis mis en tête d'éviter des doublons et donc d'ignorer le/les ajouts inutiles. J'ai donc ajouté un clé primaire à ma table mémoire
et me suis alors penché sur les mises à jour en mémoire cache
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Datas.Produits.CachedUpdates:=True; Datas.Produits.CopyDataSet(Datas.GQuery, [coAppend]); if Datas.Produits.UpdatesPending then Datas.Produits.ApplyUpdates; Datas.Produits.CachedUpdates:=False;Mais, là, il y a un hic
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TDatas.ProduitsAfterApplyUpdates(DataSet: TFDDataSet; AErrors: Integer); begin Produits.Refresh; end;
1 - Je dois avoir oublié quelque chose mais je vois pas quoi ?[FireDAC][Comp][DS]-205. Impossible d'actualiser l'ensemble de données [Produits]. Les mises à jour en cache doivent être validées ou annulées et le mode Batch doit être terminé avant l'actualisation
2 - Comment faire pour ignorer les insertions de lignes dupliquées ?
Merci, mes CachedUpdates sont loin dans ma mémoire et c'est un cas que je n'ai pas trouvé dans les exemples
Partager