DataSet avec plusieurs tables [Résolu]

Messages postés
10
Date d'inscription
lundi 12 avril 2004
Dernière intervention
26 avril 2008
- - Dernière réponse : wacssine
Messages postés
59
Date d'inscription
samedi 13 octobre 2007
Dernière intervention
1 décembre 2013
- 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
Messages postés
60
Date d'inscription
samedi 4 mars 2006
Dernière intervention
15 août 2011
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Gwendal3
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
108
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
Messages postés
10
Date d'inscription
lundi 12 avril 2004
Dernière intervention
26 avril 2008
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
Messages postés
10
Date d'inscription
lundi 12 avril 2004
Dernière intervention
26 avril 2008
0
Merci
Personne pour m'aider ?
Commenter la réponse de tibblou
Messages postés
10
Date d'inscription
lundi 12 avril 2004
Dernière intervention
26 avril 2008
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
Messages postés
59
Date d'inscription
samedi 13 octobre 2007
Dernière intervention
1 décembre 2013
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.