|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Julien Développeur informatique Inscription : septembre 2011 Messages : 16 ![]() |
Bonjour,
Je viens ici pour demander un coup de main sur un problème qui me turlupine depuis bientôt 2 semaines ... Êtant plutôt spécialisé au développement web, je n'ai pas l'habitude d'utiliser le C#, mais je pense que ce problème reste assez complexe et est au dessus d'un problème de débutant. Pour faire simple, je développe une application dont un des écrans contient 3 DGV. Ces DGV sont là pour afficher et permettre une modification / suppression d'informations. Pour faire simple, le 1er DGV présente les éléments "Père", et lorsqu'on en sélectionne un les deux autres DGV sont ré-actualisés pour afficher les deux enfants du père concerné. Je n'ai aucun problème dans cette gestion des 3 DGVs, j'ai d'abord voulu gérer ça grâce à un databinding, mais étant en manque de temps j'ai finalement tout fait moi même Mon problème est dans l'enregistrement des modifications effectuées dans un ou plusieurs des DGV. Pour expliquer un peut tout ça, j'avais rédigé un pdf pour l'envoyer à mon prof qui ne m'a pas répondu, et le temps passe, mais je pense que je peux vous mettre globalement la même explication, qui est claire je trouve. N'hésitez pas à demander des précisions si besoin ! Citation:
|
|
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 222 ![]() |
Bonsoir,
vous devriez vérifier les valeurs des propriétés de l'objet DataAdapter que vous utilisez pour mettre à jour vos données en mode pas à pas. En vb.net, il existe la propriété TableMappings qui contient les tables mappées du DataAdapter, je présume qu'il doit exister la même en C#. D'après l'erreur que vous annoncez, on dirait qu'il vise une table différente que celle escomptée. EDIT: Vous pouvez aussi faire un update de tout le dataset, ça vous évite de passer en revue vos 3 DataTables
__________________
est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Julien Développeur informatique Inscription : septembre 2011 Messages : 16 ![]() |
Merci pour votre réponse, je ne connaissais pas TableMapping et je vais l'essayer ce soir pour voir ce qu'il en est
![]() Par contre pour l'update avec le dataset, c'est la première chose que j'ai fait mais ça buguait tout autant. Si je montre l'exemple en prenant datatable par datatable, c'est pour montrer l’étrangeté du problème : l'update fonctionne avec une mais pas avec les autres |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
Il me semble qu'un DataAdapter n'a qu'un seul jeu de Select/Insert/Update/DeleteCommand. Le CommandBuilder se base donc sur la SelectCommand courante (celle de la table3) pour définir les mises à jour à effectuer. Ainsi le 2ème Update opérera avec la même commande que le premier et il ne se passerra rien.
On devrait éviter ce problème en créant un DataAdapter par table.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
20
|
|
|
#5 | |
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 222 ![]() |
Graffito >> Vilain, tu lui as donné la réponse
![]() Citation:
Une autre solution est d'utiliser un DataSet fortement typé. Personnellement, j'en abuse, c'est tellement plus simple de retrouver ses objets et méthodes
__________________
est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et
|
|
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Julien Développeur informatique Inscription : septembre 2011 Messages : 16 ![]() |
Merci pour vos réponses ! Je ne savais pas pour les dataadapters mais je retiens l'info
J'ai presque réparé mon bug mais je pense gérer le reste. Par contre pour le dataset typé je n'ai pas trop compris : en gros je peux dans l'outil créer l'objet en insérant X tables dans celui-ci ? mais comment je peux ensuite utiliser ça ? Pour passer mes requètes surtout ? |
|
|
00
|
|
|
#7 | |||
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 222 ![]() |
Citation:
Citation:
Citation:
Soit comme vous le faites avec n'importe quel objet, en accédant aux propriétés. Pour moi qui ne suis pas programmeur, les gros avantages sont que c'est simple d'utilisation, ça réduit le code, c'est pas compliqué à comprendre puisqu'en général le schéma du DataSet correspond à celui de la base de données et pour finir on ne se bat pas avec l'ouverture et fermeture des connections ![]() A si, dernier point que j'aime bien c'est que l'on peut rajouter des champs dans les DataTables. Sinon pas grande différence avec l'utilisation des objets OleDB, SqlClient, SqlServerCe, ...
__________________
est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et
|
|||
|
|
10
|
|
|
#8 | |
|
Invité de passage
![]() Julien Développeur informatique Inscription : septembre 2011 Messages : 16 ![]() |
Ok merci
Je testerai sûrement dans mes applis à venir, mais sur ce projet ça me prendrai trop de temps à adapter mon code pour ça. Mes updates fonctionnent, donc, avec les requetes sans jointures ! Alors que maintenant je n'ai que ça ( j'ai amélioré mon code .. ). J'ai donc fait quelques recherches, et apparemment je dois créer moi même mes requètes d'update / d'insert et de delete. J'ai trouvé ça sur le net : Citation:
Mais je ne comprends pas le code, à quoi correspondent les @sal, @empno etc ... ? De plus sont exemple est avec une requête simple, donc je ne visualise déjà pas l'intérêt de faire ça, mais encore moins dans une requête avec jointure ... Merci ! |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com