Lien entre plusieurs tables d'une même DB en vb.net

Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
- - Dernière réponse :  dandong - 6 mai 2013 à 11:36
Bonsoir,
Après plusieurs recherches sur le NET et après avoir suivi des tutoriels concernant les bases de données SQL et VB.net, j'ai réussi à créer une base de donnée local contenant deux tables :
- Élève
- Professeur

J'ai dans chaque tables plusieurs colonnes et l'une d'elle est particulièrement intéressante, celle de la CLASSE.
En effet chaque élève fait partie d'une Classe et chaque professeur possède une classe et je souhaite lier ces deux tables, je m'explique :

Je souhaite que lors de l'utilisation du logiciel, à l'aide d'un combobox ou d'une listbox, lorsque l'on choisi un professeur et une classe on puisse voir tous les élèves de la classe dans une ListView ou une Listbox mais le problème c'est que je n'arrive pas à afficher les infos du prof et les élèves de la classe en même temps :s

J'ai chercher partout mais aucun sujet ne correspond aux critères que je dois suivre :)
Merci d'avance pour l'aide.
Afficher la suite 

14 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Y a un truc qui perso. me semble étrange.

"chaque professeur possède une classe" Si tu veux mais c contradictoire avec "lorsque l'on choisi un professeur et une classe". Car si le professeur à une classe pour quoi doit-il avoir un combobox pour choisir une classe ? Si la relation est un - un alors il suffit de choisir le professeur pour "voir tous les élèves de la classe".

Dans le cas ci-dessus il faut que la table Élève aie une clefs étrangère qui réfère à l'ID du prof. Ainsi pour la tab. élève tu aura un requête du style SELECT * FORM eleve WHERE IDPROF = professeur choisi par l'utilisateur.


Note la requête est l'analyse et grossière c juste pour aider.
Commenter la réponse de 4u4me4us
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Oui voila, je veux que lorsque l'utilisateur clique sur le professeur, toutes ses classes s'affichent et lorsque l'on clique sur une classe tous les élèves s'affichent.
Mais je n'arrive pas à créer un lien entre les deux tables.
Merci de ton aide mais je n'ai pas bien compris ce que tu m'as dis plus haut ^^.
Commenter la réponse de foussouy
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Il faudrait que je sache dans qu'elle tab. ce trouvent les champs que tu souhaites atteindre.
Commenter la réponse de 4u4me4us
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Eh bien dans les deux :) il y a le champ classe dans les deux tables et c'est cela le problème, je ne sais pas lier les deux pour qu'ils soient synchrone dans la base de donnée
Commenter la réponse de foussouy
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
A ta place je créerais une troisième table que j'appellerais classe et je supprimerais ce champs des deux autres tables.

classe aurait les champs suivants:
IDclasse
Ref. ID Prof
Nom de la classe

Puis je modifierais eleve en ajoutant le champ Ref. ID classe

Donc pour chaque enregistrement il faut que Ref. ID Prof ID Prof (table prof) et que Ref. ID classe IDclasse

Ainsi l'utilisateur clique sur le professeur on récupère l' ID Prof du prof choisie puis on fait une requête dans la tab classe. qui retourne tous les noms de classe. qui ont un Ref. ID prof = à ID Prof choisi.

et lorsque l'on clique sur une classe on récupère l'IDclasse de la classe choisie puis on fait une requête dans la tab élève qui retourne tous les élève qui on le Ref. ID classe = à l'IDclasse de la classe choisie
Commenter la réponse de 4u4me4us
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
Salut
peut etre décrire les tableaux ainsi

4 tableaux TableProfesseur,TableStudent,TableClasse
tableTravail

TableStudent
les champs
primarykey keystudent (automatic)
keyclass (du TableClasse)
nom
prenom
portable
------------
TableClass
primarykey keyclass
nom de la class
etage
---------
TableProfesseurs
key automatic
idprof
discipline
keyclass (du TableClasse)
nom
prenom
portable

TableCours
primarykey kcours
idprof
keyclass (du TableClasse)
jour
heures


on remplit le TableClasse
101 Premiere1 3eme
102 premiere2 3eme
103 terminalA 2eme

TableProfesseurs
01 1111 phy 101 Einstein Albert 343433211
02 2344 chim 101 Curie Marie 45433333
03 3333 math 103 Laplace Pierre-Simon 45422222
04 7777 math 101 Fourier Joseph 56444433
05 1111 phy 102 Einstein Albert 343433211
06 3333 math 102 Laplace Pierre-Simon 45422222

TableCours
11 1111 101 lun 8h 10h
12 7777 101 mar 8h 10h
13 2344 101 mer 8h 10h
14 3333 102 lun 13h 14h
15 7777 103 mer 10h 12h

TableStudent
01 Toto Bobo 101 012323343433
02 Toto Zero 102 454533444
03 Titi Toto 102 5565456545
04 blabla bbbb 103 54532222

tous les éleves de Einstein Albert

SELECT TableStudent.nom,TableStudent.prenom
From TableStudent,TableProfesseurs
WHERE TableProfesseur.nom = Einstein And
TableProfesseur.prenom = ALbert AND
TableStudent.keyclass = TableProfesseur.keyclass


bon ça a l'air de travers
Commenter la réponse de cs_ShayW
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Donc voilà, je viens de créer mes trois tables est-ce bien comme cela qu'il faut les faire ?

http://imageshack.us/photo/my-images/46/dbtable.jpg/

J'ai défini en clé primaire N0, N1 et N3.
Commenter la réponse de foussouy
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
C dommage de nommer une clé primaire N0 .....

Dant ta tab classe, par exemple, tu as N3 IDclasse. Supprime le N3 et met IDclasse comme clé primaire à la place.

Aussi il manque des champs de lien. Je t'invite à relire mon poste et à observer celui de ShayW qui ta fait un très bon model.
Commenter la réponse de 4u4me4us
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Oui mais je ne sais pas comment créer les liens c'est ça le problème ^^
Commenter la réponse de foussouy
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Les liens tu le créer via des requêtes (Vu que ton poste est tout sql) comme tu le montre shayW
SELECT TableStudent.nom,TableStudent.prenom
From TableStudent,TableProfesseurs
WHERE TableProfesseur.nom = Einstein And
TableProfesseur.prenom = ALbert AND
TableStudent.keyclass = TableProfesseur.keyclass


Mais si cela ne te dis rien il faut que tu cherche sur le forum, le net et les livres.
Commenter la réponse de 4u4me4us
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Effectivement, ma base de donnée est en SQL mais je l'exploite grâce à Visual studio 2012 en VB.net, dois-je donc rentrer ce code dans micrsoft SQL Server management studio ou Visual studio 2012 ? :) Désolé mais c'est un peu confus pour moi.

P.S : J'ai suivi ce tuto pour le SQL : http://plasserre.developpez.com/cours/vb-net/?page=bases-donnees1
Commenter la réponse de foussouy
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Visual studio 2012, il faut que tu te renseignes sur Visual studio 2012 et les basses de données (connexion, requêtes...) Moi perso g pas VS2012 et cela fait un moment que g pas prog. pour des DB. Donc mes conseilles risquent d'être obsolète (ADO n'est peut-être plus à la mode )


Bonne chance et bon week-end!
Commenter la réponse de 4u4me4us
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Ok donc je crée ma BDD grâce à SQL ou ACCES mais le code je l'implante dans VS2012 si j'ai bien compris ?
Je test et je vous tiens au courant ^^
Commenter la réponse de foussouy
0
Merci
Bonjour,
J'espère que vous allez bien. j'ai presque le même souci que toi foussouy, je travaille sur une application vb.net sur l’expertise foncier, dans mon application je dois préciser le découpage administratif de chaque bien à expértiser : je dois choisir en premier lieu la région dans un combobox, ensuite il faut qu'un autre combobx s'affiche ou il y a just les provinces qui contenait la régoin choisie.
Pour le moment j'arrive just à afficher les informations dans une seule table. Peux tu me filer le code que t'as utilisé pour lié les trois tables?
Merci d'avance
Commenter la réponse de dandong