J'ai une table composant dans laquelle j'ai 2 numéros de fournisseurs : nf1, nf2 et j'aimerai afficher le noms de ceux-ci dans un datagrid en liant la table composant à celle des fournisseurs
J'ai donc commencé la requête suivante, mais je n'arrive pas à renommer mes jointures :
dim sql as string "select composant.*, fournisseur.nf, fournisseur.nom from ((composant inner join fournisseur on composant.nf1 fournisseur.nf) inner join fournisseur AS EXPR2 on composant.nf2 = fournisseur.nf)"
Le message d'erreur (que j'ai en allemand...) me dit que la connexion n'a pu être entretenue, établie..
Est-ce que je ce que je veux faire est possible de cette manière ?
Comment renomme-t-on un champ lorsqu'on s'y connecte ?
dim sql as string "select composant.*, fournisseur.nf, fournisseur.nom,fournisseur1.nf, fournisseur1.nom from (composant inner join fournisseur on composant.nf1 fournisseur.nf) inner join fournisseur AS fournisseur1 on composant.nf2 = fournisseur1.nf"
Ok merci pour vos réponses les gars, bien essayé, mais toujours pas de fructueuse solution..
Bouv, ta commande marche, mais impossible d'afficher les 2 résultats qui m'intéressent dans le datagrid car le 'mapping est le même : je cherche vraiment à renommer le nom d'une liaison particulière entre les tables..
BasicInstinct : je pense qu'on est sur la bonne voie... à un petit détail prêt ! (j'ai le même message d'erreur qu'avec ma requête..)
Voilà, surtout n'hésitez pas à continuer.. il va bien falloir que je résolve ce problème et je suis sûr que c'est possbile de cette manière..
(l'autre consiste à faire un doublon de la table entière fournisseur en une fournisseur2 et ainsi plus de problème.. mais je ne veux pas en arriver là.. c'est vraiment pas classe et tout ça pour un simple affichage !! allez les gars ! on se motive les troupes !)
.Maytheforcebewithyou.Maxime.
Vous n’avez pas trouvé la réponse que vous recherchez ?
J'avoue avoir posté un peu vite... j'avais pas très bien vu toute les finesses de la requête de BasicInstinct, qui est, après mûr examen, bonne.
Du moins sans erreur..
En revanche, la requête me renvoit aucun champ... et ça c'est bizarre.. tu sais pourquoi Basic ?
Une petite relecture ?
je la triture de mon côté aussi et je vous tient au courant.. (même si je préfèrerai que ce soit l'inverse...)
Ma base est de l'access aussi, je développe en Vstudio 2002 et côté appels à la base, je dois être en ADO.net...
(provider : MsJet4.0 ole db provider pour la connexion ; oledbdataadapter de VS pour les requêtes..)
La requête ne m'envoit aucun enregistrement (bien que ma table soit évidemment pleine..)
allez, je vous met le string (attention aux yeux, c'est de l'allemand..)
Dim str As String "select bauteile.artikelnr, bauteile.bezeich, bauteile.bezeich2, bauteile.bezeich3, liefernt.lfnr, liefernt.name, liefernt1.lfnr as LF_n1, liefernt1.name as LF_n2 from ((bauteile inner join liefernt on bauteile.lfnr liefernt.lfnr) inner join liefernt as liefernt1 on bauteile.lfnr2 = liefernt1.lfnr)"
Dim dastr As New OleDbDataAdapter(str, cn)
Dim dst As New DataSet()
dst.Clear()
Dim k As Integer
Try
k = dastr.Fill(dst, "bauteile")
Catch bb As Exception
MessageBox.Show(bb.Message)
End Try
' -> k = 0... , mais pas d'erreur..
nota : si je remplace liefernt1.lfnr par LF_n1 à la fin du string (->bauteile.lfnr2 = LF_n1), là, par contre, ça plante..
Concernant les 'champs' ( i.e les colonnes..) là pas de problème, j'ai bien un bon schéma de datagrid.. mais il est vide.. c'est là que c'est pas cool...
Pourtant aucune trace de condition dans la requête... non ? si ?
Ok, aujourd'hui est un bien meilleur jour...
En reprenant le problème ce matin je me suis rendu compte que la plupart (tous.., en fait) de mes composants n'avait pas de fournisseur allant avec leur numéro_fournisseur2, et c'est pourquoi la requête ne me retournait aucun champ...
Merci donc beaucoup, j'accepte la précédente réponse très 'basic', et vous en pose éventuellement une autre :
(si vous avez 5 min...)
Est-il possible que ma requête se foute de savoir si le fournisseur2 existe ou non, et me renvoit tous les composants quoiqu'il arrive ?
(ça a l'air un peu plus costaud..)