ADO.NET

cs_chrisrock Messages postés 5 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 11 juillet 2007 - 2 juil. 2007 à 13:02
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 3 juil. 2007 à 10:47
Bonjour à tous,

   Je débute en VB.Net (je programmais précédemment avec VB6) et j'aurai besoin de quelques conseils.
J'utilise Visual Studio 2005 Professional Edition et VB.net.

J'ai utilisé une base de données SQL contenant les tables suivantes : Customers, Orders, Orders Details et Product. Cette DB est basée sur le BD d'example d'Access (Northwind).

J'ai choisi d'utiliser le système ADO.Net et j'ai créer un dataset visuellement, jusque là pas de problème...
J'ai créer ensuite un form avec les champs de la table customers, j'ai créé un datagridview basé sur la
table Orders et un datagridview basée sur la table OrdersDetails. Tous ça sans code, Drag & Drop sur le formulaire. Les datagridview sont correctement mis à jour, Génial  !!

J'ai cependant une question : comment faire si je veux dans le datagridview basé sur la table orderdetails
afficher le nom du produit (table Product) et non pas l'ID ??

Dois-je créer un DataAdapter avec une requête SQL qui fait un join avec les tables Orders Details et Product de façon à ajouter le nom ou dois-je modifier charger les données basée sur mon DataAdapter OrderDetails et ajouter le nom dû produit dans le datagridview par programmation (si oui comment ??) ??
Si j'utilise la 1ier méthode, cela à l'air facile dans le cas d'une petite application avec 4 tables mais je dois redévelopper une application avec +/- 50 tables, cette méthode ne va-t-elle pas me poser des problèmes
(car je risque d'avoir beaucoup DataAdapter...) !!

Merci d'avance pour vos conseils ..

Bien à vous,

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 juil. 2007 à 21:25
Je n'ai pas l'habitude de mettre en place l'accès aus données par le mode graphique de VB2005 (je prefère mais faire tout à la main par le code) et donc je ne pourrais pas t'aider sur ce point. Mais pour moi la jointre est effectivement la solution pûisque en plus des champs de la table OrdersDetails il te faut retourner en plus et en même temps le champ Nom de la table produit correspond à l'ID présent dans la table OrdersDetails donc effectivement jointure sur le champ ID

Et les jointures c'est la base des bases de données relationnelles et qui peuvent facilement dépasser une centaine de tables.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_chrisrock Messages postés 5 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 11 juillet 2007
3 juil. 2007 à 10:04
Merci casy , donc tu choisirai de faire une nouvelle requête pour obtenir les données nécessaire.

C'est cette solution que je pensais implémenter mais j'ai toujours la question au niveau du dataset !!
Faut-il créer un nouveau tableadapter et y indiquer la requêtes SQL ou alors créer un vue directement
dans la base de données et importer celle-ci dans le dataset ??

Merci d'avance
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 juil. 2007 à 10:19
Une nouvelle requette, je ne pense pas, je dirais plutot que c'est la requette qui te sert à remplir le datagridviewla première fois qui serait à modifier. Mais comme tu as tout fait en mode graphique, je en sais pas si tu peux acceder à la requette qui est executer pour remplir le datagridview.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_chrisrock Messages postés 5 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 11 juillet 2007
3 juil. 2007 à 10:35
Non je ne sais pas utiliser le même dataAdapter car la requête doit êtredu même style que : "Select * From orderdetails" ce que je peux faire c'est ajouter par exemple des paramètres à cette requête dans la clause WHERE mais les requêtes doivent toujours retourner tous les records de la table OrderDetails.

D'où ma question : à quel endroit indiquer les requêtes sur plusieurs tables ??
A mon avis, pour ce type de requêtes je vais me passer du concepteur de dataset et programmer ça dans le
code !! Sauf si quelqu'un à une autre idée !!

Merci d'avance
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 juil. 2007 à 10:47
Oui tu as raison, elle doit etre du style "Select * From orderdetails". et il faudrait la modifier en quelque chose qui pourrait resembler à ceci :

"SELECT *, Product.Nom AS Product FROM OrdersDetails INNER JOIN Product ON OrdersDetails.id = Product.id"

Les nom de champs, tables et type de jointure sont bien entendu à ajuster à ton cas.

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0