DataSet Mis à jour

Résolu
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 - 15 févr. 2007 à 15:04
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 - 20 avril 2007 à 14:18
Bonjour à tous amis développeurs,

Je vous expose mon soucis.
J'ai une base Access et une application sur 2 postes différents, qui accèdent tous deux à cette même base access.
Les deux postes peuvent effectuer des modifications sur une table dans la base de données (ajout de lignes, suppression de lignes et modification de lignes)
Plutot de créer un dataset qui va s'alimenter complètement plusieurs fois par minute, je me suis dit qu'il serait plus pratique de créer un DataSet en public qui se met à jour dès qu'une modif est effectuer sur la table.

Ma question est donc:
Comment faire pour que le dataset (ou la datatable contenu dedans) ne mette à jour la tabel dans la base de données qu'aux lignes modifiés, et, qu'en plus, je puisse savoir si une ligne a été modifié, ajouter ou supprimer (propriété rowstate je crois, mais j'ai du mal).
De plus, lorsque mon application rajoute, supprime ou modifie une ligne, je pense qu'il est moins lourd de ne renvoyer que les modif' vers la base que toute le dataset...

Je ne sais pas vraiment quelle est la meilleure solution, et sachant que l'application pourrait tourner sur un peu plus de deux postes, je voudrait éviter les rapatriements complets de la table et l'update complète de la table avec le dataset.

Merci beaucoup à vous pour votre aide,

Cordialement,

EvilGost

EvilGost [;)]

6 réponses

djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 11:52
Il ne s'agirait pas plutôt là d'un problème de requête de sélection???

Si tu modifies ta requête de sélection en ajoutant une clause WHERE champ_cle_index_dont_tu_es_sur_qu_il_ne_presente_pas_de_doublon_comme_un_numero_interne NOT IN (SELECT champ_cle_index_dont_tu_es_sur_qu_il_ne_presente_pas_de_doublon_comme_un_numero_interne  FROM ta_table_dans_ton_dataset)
Ca devrait fonctionner.

En tout cas c'est comme ça que je fais pour charger ma datatable avec des données nouvellement insérées qui ne sont pas encore présentes dans mon dataset. Cependant, je passe par une table de stockage intermédiaire, puisque le dataset n'existe qu'en mémoire et que j'ai besoin d'utiliser mon application chaque jour avec les données nouvelles de la veille en plus.

A +
------------------------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question
3
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
15 févr. 2007 à 16:58
Pour faire simple, je souhaiterai savoir s'il est possible de ne pas vider le DataSet (Dataset.Clear) et de le reremplir (DataSet.fill), mais plutot de mettre à jour le DataSet des modifications de la table dans la base de données.

EvilGost [;)]
0
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
20 avril 2007 à 12:08
ca m'a l'air d'etre une très bonne idée ca :D
merci à toi

par contre, comment faire une requete pour qu'il lise à la fois la table distant sur le serveur SQL et la table Dataset local?

EvilGost [;)]
0
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 12:54
Ben perso je fais en deux temps :

1) j'extraie les nouvelles données réellement ajoutées depuis ma
dernière extraction dans ma "table transitoire de stockage" (grâce à la
clause WHERE xx NOT IN (yyy)). Cette table est donc la représentation
physique de ce que je veux avoir exactement dans mon dataset au moment
où j'y charge les enregistrements dans ma datatable.

2) je charge simplement ma table transitoire dans mon dataset. Du coup
ma datatable contient tous les enregistrements que je veux traiter. En
gros je travaille sur ma table transitoire mais en mode déconnecté.


A+
-----------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 12:56
pour répondre à ta question, je ne sais pas s'il est possible de faire
une jointure ou une clause NOT IN entre une table réelle et une table
de dataset. C4est pour ça que je passe pas une table transitoire de
stockage des enregistrements à charger en mémoire dans le DS.

-------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question
0
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
20 avril 2007 à 14:18
impec, c'est pas bete comme idée :)
merci beaucoup pour tes réponses rapides

EvilGost [;)]
0
Rejoignez-nous