Problème INNER JOIN VB - VB/VBA/VBS - Programmation
Marsh Posté le 04-05-2006 à 15:49:47
Je serais tenté de dire : tu ne fais pas.
Une base de données créée comme tu le laisses entendre n'est pas aux normes et ne mérite pas d'exister !
Ensuite, et pour éviter toute ambiguité auprès des débutants passant lire ce sujet, « INNER JOIN » et « VB » n'ont rien à voir l'un avec l'autre.
Soit tu dis que tu bosses sous Access (VBA), soit c'est du VB5/6 avec une base de données Access/SQL/Oracle/MySQL/...
Mais VB n'intègre aucunement du SQL, il faut une base de données liée.
Ceci dit, je vais essayer de te dépanner quand même. La requête suivante devrait te donner une piste.
SELECT testtable.lib, testtable_1.lib, testtable_2.lib |
Le principe est de lier 3x la même table sous des noms (alias) différents pour lire les libellés des 3 ref de tes ventes.
Marsh Posté le 04-05-2006 à 18:59:27
ok ca marche.
Le problème est autre maintenant
Je rajoute cette fonction sur une BD existante. Donc il y a déjà des enregistrements.
Pour les nouveaux enregistrements, il suffira d'encoder les références et la dénomination produit adéquate sera imprimée par le formulaire. Par contre, plus moyen de séléctionner les anciennes factures vu qu'aucune référence n'a jamais été encodée (mais plûtot le nom entier du produit).
Y a pas moyen de faire un truc du style:
Si reference non trouvée dans la table produit, alors imprimer le nom entier déjà encodé. Sinon, imprimer la dénomation relative à la référence de la table produits..
Compliqué je sais
Marsh Posté le 04-05-2006 à 20:13:04
Essaye ça :
les # correspondent à des relations que tu crées depuis la fenetre "relations"
coté # c'est une relation 1, de l'autre coté, c'est une relation "à plusieurs"
Avant de chercher des résultats, les tables TbProd, TbPrix et TbCategorie doivent être remplies mais tu pourras modifier leurs valeurs par la suite (gros avantage)
Tu peux evidemment inserer un client dans ta table TbClients pour tester la requête expliquée ci-après.
TbClients :
Index_nom_Client ==>AutoNumber + clé primaire
Nom_Client ==> Text (Dupont, Marcel...)
Index_code_Produit ==> Numérique + # depuis TbProd / Code_Produit
TbProd :
Index_nom_Produit ==>AutoNumber + clé primaire
Index_prix_Produit ==> Numérique + # depuis TbPrix
Nom_Produit ==> Text (exemple chips allégées paquet 250 gr, cigarettes Marlbarré par 20,...)
Code_Produit ==> Text (exemple 0a0d01, 02z1d5, 51q4c2...)
Index_categorie_Produit ==> Numérique + # depuis TbCategorie / Index_categorie_Produit
TbPrix :
Index_Prix_Produit ==>AutoNumber + clé primaire
Prix_Produit ==> Numérique monnaie (15,...)
TbCategorie :
Index_categorie_Produit ==>AutoNumber + clé primaire
Type_catégorie ==> Text (exemple alimentaire, vetements, alcools...)
=========================================================
RqMASTER
Index_Master ==>AutoNumber + clé primaire
Nom_Client ==>
Code_Produit ==>
Nom_Produit ==>
Type_catégorie ==>
Prix_Produit ==>
Cette table est une requête dans laquelle tu incorpores les champs correspondants (listés ci-dessus) à partir de chacune de tes tables.
Attention, avant d'affecter un produit à un client, il faut être sur que les catégories, codes prix et autres existent.
Voila. j'espère que ca t'aura aidé un peu...
Marsh Posté le 04-05-2006 à 15:26:52
Bonjour à tous.
J'ai deux tables, une des produits, et une des ventes.
Dans la table des ventes, on encode les refs de produit. je veux à présent crééer une requête qui selectionnera les references de la table des ventes et ressortira les noms des produits.
S'il n'y avait qu'un intitulé par produit ce serait simple.
SELECT testtable.nom
FROM testtable INNER JOIN testvente ON testtable.ref = testvente.refproduitcommande;
Mais j'ai trois champs de refs de produits vendus dans ma table de vente. Comment faire dans ce cas?
merci