Forum Clubic

Problèmes de liaison dans ma base sous Microsoft Access 2000

bonjour, voici mon problème :
J’ai une table “ligne_commande” avec comme clés primaires les champs “réf_commande_client” et “num_ligne_commande”, et comme autres champs “code_produit” et “qté”. Ensuite j’ai en face une table “produits” avec comme clé primaire le champ “num_série”, puis comme autre champ “code_produit”.
Mais je n’arrive pas à faire une liaison entre ses 2 tables pour pouvoir ensuite avoir la liste des numéros de séries des produits relatifs à une ligne de commande clients…

Si quelqu’un pouvait m’aider ce serait sympa.
merci

Si tu fais une relation de un à plusieurs sur le code_produit de table ligne_commande vers table produits en ayant le champ code_produit de la table ligne_commande indexé sans doublons çà ne marche pas ?

Tu dis que tu as comme clés primaire ref_commande_client et num_ligne_commande, mais si je ne m’abuse une table ne peut avoir qu’une clé primaire.

Si, tu peux avoir en clé primaire 2 champs d’une table, et dans ce cas Access créée un champ virtuel composé de la concaténation des 2 champs mis en clé primaire.
Exemple :
une commande peut être composé de plusieurs lignes de commande, mais dans ta table “lignes de commande” tu mets en clés primaires les champs “n°commande” et “n°ligne”, et ensuite tu rajoutes les autres champs “produits commandés”, “qté” et “prix”.
Car ce qui est unique, c’est la concaténation du “n° de commande” et du “n° de ligne de ta commande”

La relation que je t’ai indiqué, çà ne donne pas ce que tu veux ?

non ça ne marche pas car le champ “produit” n’est dans aucune des clés des tables 1 ou 2 !
Je ne peux pas faire de liaison “1 à plusieurs” ni dans un sens ni dans l’autre…

D’ailleurs là ce serait plutôt une relation un à un qu’il faudrait. Mais je ne vois pas ce qui t’empêche de faire la relation sur la zone produit, il suffit qu’elles soient indexées sans doublon (et identique dans les deux tables).

J’ai fait l’essai çà marche.

En revanche je ne sais pas si c’est une bonne solution. Que tu fasses une relation un à plusieurs de la table En tête de commandes vers ligne de commandes c’est normal. Mais pourquoi ne pas stocker les éléments dont tu as besoin dans la table ligne commandes.

Tu auras peut-être un jour une commande dont les lignes détail contiendront des articles que tu as supprimés de ta table produits (des produits qui ne sont plus référencés).

Lorsque tu crées ta commande, il est normal que tu recherches les articles dans la table produits, mais çà ne veut pas dire pour autant que tu ne dois pas stocker les infos dans la table ligne-commande.

Je ne sais pas si c’est suffisamment clair.

Quand je fais çà, çà me fait une relation de type : “non définie” !!!

Je ne pense pas pouvoir stocker mes numéros de série de produits dans la table “ligne de commande” car les clés primaires de la table sont “le n° de la commande”, et le n° de ligne dans la commande". Donc à chaque enregistrement je n’aurais droit qu’à 1 seul numéro de série. Or si le client commande plusieurs articles identiques, je dois pouvoir enregistrer plusieurs numéros de série…


attends je crois que tiens une soluce, mais pour çà il faudrait que j'arrive à définir un champ "index" comme la concaténation d'un champ_1 avec un champ_2. Tu sais comment faire ?

… et sans passer par le sql, que ce champ "index se remplisse de manière automatique lors du remplissage des autres champs …

Je n’avais pas compris pour l’histoire des n° de série. Je pense que la relation un à plusieurs fonctionne. Le code produit de la première table doit être indexé sans doublon, le code produit de la deuxième table, indexé.


Je viens de refaire un essai avec les éléments que tu as donné. Il est important que le [b]code_produit [/b]de la table [b]ligne_commande[/b] soit [b]indexé sans doublon[/b], sinon la relation ne marche pas. En revanche le [b]code_produit [/b]de la table [b]produits [/b]peut être [b]indexé avec doublons[/b]. Edité le 09/03/2008 à 10:45

Et hop, houpla boom, maintenant çà marche !!!
Merci de tes indications…
Edité le 09/03/2008 à 18:09

Super si çà marche. Ravi d’avoir pu t’aider.