DataSet avec plusieurs tables [Résolu]

tibblou 10 Messages postés lundi 12 avril 2004Date d'inscription 26 avril 2008 Dernière intervention - 19 janv. 2007 à 18:05 - Dernière réponse : wacssine 59 Messages postés samedi 13 octobre 2007Date d'inscription 1 décembre 2013 Dernière intervention
- 26 févr. 2008 à 17:46
Bonjour,


Je suis en train de développer une application VB en ado.net, avec une base de
données ACCESS contenant 3 Tables (Utilisateur, PC, Logiciel).


Ce programme me permettra de référencer les Utilisateurs, leurs Pc ainsi que
les Logiciels installés sur chacun d'entres eux.


L'affichage des informations se fait par des Listbox.


J'ai crée la connexion, qui se connecte sur la BD, ainsi que tous les objets
nécessaires (DataSet, Command, DataAdapter, Datable...).

Toutes les informations que j'attends de la Table Utilisateurs s'affichent dans
les différentes Listbox (elles se mettent à jour automatiquement si je
sélectionne un autre utlisateur)


Le problème, c'est que je souhaite à présent afficher les informations de la
table PC, qui coïncideraient à la sélection de l'utilisateur (donc de la table
Utilisateur) via un champs commun contenu dans les deux tables et qui se nomme
: "IDPC".

Ma question est la suivante :


- Comment dois-je faire, pour que les deux champs Utilisateur.Idpc et Pc.Idpc
soient communs, afin que l'affichage des listbox soit cohérant ?

Exemple : l'IDPC sélectionné de la table utlisateur, soit le même
IDPC présélectionné de la table PC ???? <!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Image_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75"
style='width:11.25pt;height:11.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\Beuz!\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->


J'ai lus pleins de tutoriaux à propos des DataSet et du Sql, mais je bloc...<!--[if gte vml 1]><v:shape
id="Image_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:11.25pt;
height:11.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\Beuz!\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->


Ci dessous la déclaration des Objets pour la table Utilisateur (qui marche)
sachant que la connexion est déjà établie. Actuellement les informations de la
table PC s'affichent, mais la présélection de l'IDPC n'est pas commun avec
celui de l'IDPC de la table Utilisateur.

ObjetDataSet.Clear()

        strConn =
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source="
& Application.StartupPath & "\bd1.mdb;"

        ObjetConnection = New
OleDbConnection()

        ObjetConnection.ConnectionString =
strConn

        ObjetConnection.Open()


        strSql = "SELECT *. FROM
UTILISATEUR"

        ObjetCommand = New
OleDbCommand(strSql)

        ObjetDataAdapter = New
OleDbDataAdapter(ObjetCommand)

        ObjetCommand.Connection() =
ObjetConnection

        ObjetDataAdapter.Fill(ObjetDataSet,
"UTILISATEUR")

        ObjetDataTable =
ObjetDataSet.Tables("UTILISATEUR")


        ListBox2.DataSource =
ObjetDataSet.Tables("UTILISATEUR")

        ListBox3.DataSource =
ObjetDataSet.Tables("UTILISATEUR")

        ListBox4.DataSource =
ObjetDataSet.Tables("UTILISATEUR")

        ListBox5.DataSource =
ObjetDataSet.Tables("UTILISATEUR")

        ListBox6.DataSource =
ObjetDataSet.Tables("UTILISATEUR")

        ListBox7.DataSource =
ObjetDataSet.Tables("UTILISATEUR")


        ListBox2.DisplayMember =
"IDUSER"

        ListBox3.DisplayMember =
"NOM"

        ListBox4.DisplayMember =
"PRENOM"

        ListBox5.DisplayMember =
"MPSESSION"

        ListBox6.DisplayMember =
"EMAIL"

        ListBox7.DisplayMember = "IDPC"
   
   

        strSql = "SELECT PC.* FROM PC"

        ObjetCommand = New
OleDbCommand(strSql)

        ObjetDataAdapter = New
OleDbDataAdapter(ObjetCommand)

        ObjetCommand.Connection() =
ObjetConnection

        ObjetDataAdapter.Fill(ObjetDataSet,
"PC")

        ObjetDataTable = ObjetDataSet.Tables("PC")

       

        ListBox14.DataSource =
ObjetDataSet.Tables("PC")
       
ListBox14.DisplayMember = "IDPC"


J'espère avoir été clair...n'hésitez pas à me faire parvenir vos remarques.


Merci d'avance !!!!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Gwendal3 60 Messages postés samedi 4 mars 2006Date d'inscription 15 août 2011 Dernière intervention - 22 janv. 2007 à 16:25
3
Merci
Salut,

Tu pourrais créer une liaison entre les tables dans ton DataSet.... Mais là je ne sais pas comment faire....

Autrement, je chargerais le DataSet en mémoire come tu as fait, et je crérais un DataView qui permettait de trier, rechercher dans une table charger dans un DataSet.
Ainsi, lorsque l'utilisateur séletionnera un "Utilisateur" dans une liste, tu récupères l'ID, tu le passe en paramètre dans le DataView de ta table PC et normalement tu obtiens tes infos....

Tiens nous au courant

Gwendal

Merci Gwendal3 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Gwendal3
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 19 janv. 2007 à 18:13
0
Merci
Pas la peine de poster 2 fois la même question, surtout avec aussi peu de temps d'intervale !

Ta première question est supprimée.
Commenter la réponse de cs_DARKSIDIOUS
tibblou 10 Messages postés lundi 12 avril 2004Date d'inscription 26 avril 2008 Dernière intervention - 19 janv. 2007 à 18:15
0
Merci
Désolé lors du premier envoi,
la page m'avait retournée une erreur, je ne pensais pas que le message avait été posté.
Commenter la réponse de tibblou
tibblou 10 Messages postés lundi 12 avril 2004Date d'inscription 26 avril 2008 Dernière intervention - 20 janv. 2007 à 22:17
0
Merci
Personne pour m'aider ?
Commenter la réponse de tibblou
tibblou 10 Messages postés lundi 12 avril 2004Date d'inscription 26 avril 2008 Dernière intervention - 22 janv. 2007 à 17:44
0
Merci
Salut Gwendal,

Merci de m'avoir répondu !
Le problème est résolu, j'ai crée une DataRelation, et deux BindingSources !!!
L'affichage s'effectue dans les listbox, et cette fois-ci il est cohérent ^^

@ Bientôt et encore merci 
Commenter la réponse de tibblou
wacssine 59 Messages postés samedi 13 octobre 2007Date d'inscription 1 décembre 2013 Dernière intervention - 26 févr. 2008 à 17:46
0
Merci
Bonjour,
tu peus nos ecrire ton nouveaus code si possible ?
Commenter la réponse de wacssine

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.