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 ????
J'ai lus pleins de tutoriaux à propos des DataSet et du Sql, mais je bloc...
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 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'ai bien essayé de mettre une requête unique pour les deux tables du type :
strSql = "SELECT utilisateur.id, utilisateur.iduser, utilisateur.nom, utilisateur.prenom, utilisateur.mpsession, utilisateur.email, utilisateur.mpemail, utilisateur.aliasemail, utilisateur.idpc, utilisateur.numtel, pc.idpc, pc.marque FROM UTILISATEUR INNER JOIN PC ON utilisateur.idpc = pc.idpc;"
Mais les 2 listbox devant charger l'Idpc des deux tables (Utilisateurs et Pc) se remplissent avec l'argument :
J'espère avoir été clair...n'hésitez pas à me faire parvenir vos remarques.
Merci d'avance c'est pour un projet de cours et j'avoue que je bloc un peu...
Partager