Comment faire la jointure entre les tables en vb6 [Résolu]

Messages postés
8
Date d'inscription
jeudi 22 mars 2012
Dernière intervention
2 avril 2013
- 26 mars 2013 à 16:37 - Dernière réponse :
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 11 avril 2013 à 00:26
Bonjour à tous...
je suis un débutant en vb6 et j'ai un problème dans l'utilisation des jointures...
Alors j'ai 3 tables
livres(numlivre;titre,auteur..)
etudiants(numéro,nom,prénom..)
prêt(id livre;id étudiant,date de prêt)
je veux ajouter un emprunte dans la table prêt pour dire que tel étudiant est prêt tel livre
voila mon code:



private sub cmdOk-click()
req="select * from pret"
set rsAjout=base.openrecordset(req)
rsAjout.addnew
rsAjout![id etudiant]=txteidetudiant
rsAjout![id livre]=txtidlivre
rsAjout![date de pret]=txtdate
rsAjout.update
rsAjout.close
end sub



Il marche bien mais le problème poser est que ce code peut ajouter n'importe quel étudiant ou livre même si cet étudiant n’existe pas dans la table étudiants
si je fais la jointure entre les tables ça marche pas....???????
voila ma requête avec la jointure:
"select * from pret,etudiants,livres where pret.[id etudiant]=etudiants.numero and prêt.[id livre]=livres.numlivre"

vraiment j'ai pas trouvé la solution
j'espère que vous pouvez m'aider....SVP....
merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
3
Merci
salut,

tu peut essayer avec:
"select pret.idetudiant,pret.idlivre, pret.datepret   from (pret inner join etudiant on pret.idetudiant=etudiant.idetudiant)inner join livre on pret.idlivre=livre.idlivre"

Soyons Toujours à la disposition des autres

Merci MINDONGO 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de MINDONGO
Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
28 mars 2013 à 22:39
3
Merci
Bonsoir,

@MINDONGO : je n'ai pas l'impression que ça fonctionnera, je crois que VB6 essaie de se débrouiller avec le SQL
pour en extraire les champs qui l'intéressent ainsi que le nom de la table... [Pas testé]


Le problème c'est que tu ne sais pas ce que VB6 fait pour toi en réalité...
Ton Update après un AddNew fera je crois un INSERT INTO basé sur le SELECT utilisé pour ouvrir le rs.

Ici, que tu passes par un SQL fait main ou par un rs pour faire la modification ne changera rien
puisque je ne pense pas qu'Access vérifie si une ligne avec tel ou tel ID existe dans l'autre table.
[En tout cas, je ne me souviens pas d'avoir eu le moindre message d'erreur concernant un problème de clé étrangère.]
C'est alors à toi de ne pas permettre l'insertion de n'importe quoi. Et de toute manière, je ne comprends déjà pas
pourquoi l'utilisateur est obligé de taper l'ID lui-même : pourquoi n'utilises-tu pas des listes déroulantes ?

Un autre conseil : force-toi à déclarer tes variables avec Option Explicit, ça t'évitera de perdre un temps bête
et ça rendra ton code plus lisible puisque le lecteur verra tout de suite lesquelles sont utilisées.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
8
Date d'inscription
jeudi 22 mars 2012
Dernière intervention
2 avril 2013
31 mars 2013 à 18:51
0
Merci
Bj à tous
merci pour votre attention
Cette requête ("select pret.idetudiant,pret.idlivre, pret.datepret from (pret inner join etudiant on pret.idetudiant=etudiant.idetudiant)inner join livre on pret.idlivre=livre.idlivre") oblige l'utilisateur d’insérer un livre et un étudiant qui sont existe déjà alors qu 'il peut insérer un nouveau livre ou étudiant ....?
Commenter la réponse de cs_mimamimi
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
31 mars 2013 à 19:06
0
Merci
[Phrase incompréhensible]
Ce n'est pas à l'utilisateur de taper lui-même le n° d'étudiant/livre !

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
8
Date d'inscription
jeudi 22 mars 2012
Dernière intervention
2 avril 2013
31 mars 2013 à 19:22
0
Merci
mais c'est pas l'utilisateur qui va insérer l'id etudiant / livre c'est l'administrateur (agent de la bibliothèque) qui a va faire l'insertion
Commenter la réponse de cs_mimamimi
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
31 mars 2013 à 20:04
0
Merci
Et pourquoi il devrait s'amuser à retenir deux nombres inutilement alors que l'application peut proposer la liste des étudiants/livres dans une liste déroulante ??

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
8
Date d'inscription
jeudi 22 mars 2012
Dernière intervention
2 avril 2013
2 avril 2013 à 16:05
0
Merci
Si j'utilise une liste déroulante il faut la mettre à jour car j'ai une autre fenêtre dont l'admin peut ajouter un livre/étudiant
donc à chaque ajout dans la table étudiants/livres il faut l'ajouter dans la listbox concernée.... mais comment..?

********merci******
Commenter la réponse de cs_mimamimi
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
11 avril 2013 à 00:26
0
Merci
Il suffit de rappeler la fonction qui peuple la liste déroulante à chaque fois que tu fais une modif dans la table...
Si tu as plusieurs utilisateurs qui modifient la base en même temps, tu dois procéder autrement :
la liste doit être systématiquement recréée, donc la fenêtre qui la contient (Ajouter un prêt) ne doit pas rester ouverte.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99

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.