Actualisation des enregistrements
Remonter à Transmission de paramètres à l'ensemble de données source
Les ensembles de données client manipulent une photographie mémorisée des données de l'ensemble de données source. Si l'ensemble source représente un serveur de base de données, au fur et à mesure que le temps passe, d'autres utilisateurs peuvent modifier ces données. Les données de l'ensemble de données client deviennent une représentation de moins en moins fidèle des données sous-jacentes.
Comme tout ensemble de données, les ensembles de données client disposent d'une méthode Refresh qui met à jour ses enregistrements en fonction des valeurs courantes sur le serveur. Toutefois, l'appel de Refresh ne fonctionne que si le journal de modifications ne contient aucun changement. L'appel de Refresh alors que des modifications n'ont pas été appliquées déclenche une exception.
Les ensembles de données client peuvent aussi mettre à jour les données sans toucher au journal de modifications. Pour ce faire, appelez la méthode RefreshRecord. A la différence de la méthode Refresh, RefreshRecord ne met à jour que l'enregistrement en cours dans l'ensemble de données client. RefreshRecord modifie la valeur d'enregistrement initialement obtenue du fournisseur mais laisse intacts tous les changements contenus dans le journal de modifications.
Avertissement : Il n'est pas approprié d'appeler systématiquement RefreshRecord. Si les modifications de l'utilisateur entrent en conflit avec celles apportées à l'ensemble de données sous-jacent par d'autres utilisateurs, l'appel de RefreshRecord masque ce conflit. Lorsque l'ensemble de données client applique ses mises à jour, aucune erreur de conciliation ne se produit et l'application ne peut pas résoudre le conflit.
Pour éviter que les erreurs de mise à jour ne soient masquées, vous pouvez vérifier qu'aucune mise à jour n'est en attente avant d'appeler RefreshRecord. Par exemple, ci-dessous, AfterScroll rafraîchit l'enregistrement en cours chaque fois que l'utilisateur se déplace sur un nouvel enregistrement (ce qui garantit la valeur la plus récente), mais seulement lorsqu'il n'est pas dangereux de procéder ainsi :
procedure TForm1.ClientDataSet1AfterScroll(DataSet: TDataSet); begin if ClientDataSet1.UpdateStatus = usUnModified then ClientDataSet1.RefreshRecord; end;
void __fastcall TForm1::ClientDataSet1AfterScroll(TDataSet *DataSet) { if (ClientDataSet1->UpdateStatus == usUnModified) ClientDataSet1->RefreshRecord(); }
Voir aussi
- Spécification d'un fournisseur
- Extraction des données dans l'ensemble de données ou le document source
- Transmission de paramètres à l'ensemble de données source
- Obtention des paramètres du serveur d'applications
- Gestion des contraintes liées au serveur
- Communication avec des fournisseurs à l'aide d'événements personnalisés
- Redéfinition de l'ensemble de données sur le serveur d'applications