Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fréquence de Rechargement TableAdapter.Fill?

1 réponse
Avatar
SL3News
Bonjour,
J'ai un WindowsForm basé sur un TableAdapter.
Lorsque je lance mon formulaire, les données du serveur sont correctement
chargées grâce entre autre à la commande suivante :
TableAdapterName.Fill(DataSetName.TableName);
Ces données ne sont plus actualisées jusqu'au prochain rechargement en
utilisant toujours la même commande.
En admettant que mon application est multi-user, d'autres utilisateurs
peuvent faire des modifications sur la source de données.
Quelle est donc la meilleure solution pour que chaque utilisateur travaille
presque toujours avec les informations les plus à jour disponibles sur le
serveur?
Une possibilité est de prévoir un bouton Charger sur mon formulaire de sorte
à ce que l'utilisateur puisse cliquer sur ce bouton pour avoir les dernières
informations mises à jour; mais cette solution ne me paraît pas tellement
satisfaisante.
Merci d'avance pour vos contributions.

1 réponse

Avatar
Jean BONBEUR
il y'a plein de solutions :
- vous pouvez vous faire envoyer la modif quand elle se produit, par le
biais d'un event qui decoule d'un service ou autre chose. ça dispatch en
pagaille sur le reseau, tout ça pour pas un gros pourcentage de cibles qui
vont en avoir l'utilité.

- vous pouvez recharger à interval régulier le truc. l'ennui, c'est que vous
allez demander beaucoup d'infos, et que peu a changé. ça peut degrader les
perfs reseau si ce sont des grosses tables, ou que vous etes nombreux sur le
coup.

- vous pouvez utiliser une technique qui s'appuie sur un TIMESTAMP : un
champ de ce type dans une table est mis à jour avec un nouveau numero
(croissant) à chaque modif de la ligne ou il se trouve.donc, si vous chargez
vos données, et que vous vous faites livrer le max de timestamp, vous pouvez
etre certain que tout ce qui est plus grand que ce n° la prochaine fois est
modifié. donc, en gros, ça revient à un SELECT field1 , ... FROM [nom] WHERE
stamp>@value, ce qui dépote grave avec un index, et fourni le strict
nécessaire.

libre à vous de laisser la mise à jour à l'initiative de l'utilisateur, ou
la faire periodiquement.

mais culturellement, on ne fait pas ça pour résoudre la concurrence. on fait
comme le gestionnaire de source, on s'appuie sur de la transaction optimiste
puisqu'on est en mode deconnecté.

en gros, vous soumettez vos modifications lors de l'update, et si quelque
chose à bougé entre le moment ou vous avez demandé et le moment ou vous
sauvez, la ligne reste dans le dataset avec un marqueur d'erreur, et donc à
ce moment précis, vous rechargez ces lignes qui ont bougé, ce qui est
quelque part du merge comme pour le gestionnaire de sources...

Cordialement

--
Frédéric DIDIER
Architecte .NET
SQLI Montpellier



"SL3News" a écrit dans le message de news:
O780PzT%
Bonjour,
J'ai un WindowsForm basé sur un TableAdapter.
Lorsque je lance mon formulaire, les données du serveur sont correctement
chargées grâce entre autre à la commande suivante :
TableAdapterName.Fill(DataSetName.TableName);
Ces données ne sont plus actualisées jusqu'au prochain rechargement en
utilisant toujours la même commande.
En admettant que mon application est multi-user, d'autres utilisateurs
peuvent faire des modifications sur la source de données.
Quelle est donc la meilleure solution pour que chaque utilisateur
travaille presque toujours avec les informations les plus à jour
disponibles sur le serveur?
Une possibilité est de prévoir un bouton Charger sur mon formulaire de
sorte à ce que l'utilisateur puisse cliquer sur ce bouton pour avoir les
dernières informations mises à jour; mais cette solution ne me paraît pas
tellement satisfaisante.
Merci d'avance pour vos contributions.