Alimenter une table de jonction avec les clés primaires

Fermé
Bentux - 27 juil. 2022 à 11:16
 Bentux - 29 juil. 2022 à 09:21

Bonjour,

Je suis en train de créer une base Access pour faire un inventaire de parc informatique. Je bloque sur un problème d'alimentation des tables de jonction.

Typiquement je veux, via un formulaire d'ajout, lier un pc avec un soft. Il y a une table PC et une table soft. L'idée est que dans le formulaire je puisse choisir le numéro de série de mon pc et le soft et sa version.

En validant, il faudrait qu'il m'alimente la base de jonction avec les clés primaires, ce qui me permettrais ensuite de pouvoir ressortir ça via un formulaire de recherche.

D'avance merci pour votre aide


Windows / Firefox 91.0

A voir également:

3 réponses

yg_be Messages postés 23256 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 octobre 2024 Ambassadeur 1 541
27 juil. 2022 à 17:52

bonjour,

qu'as-tu essayé?  où cela coince-t-il?
 

0

Bonjour et merci pour ta réponse.

Je n'ai pas essayé grand chose car j'étais partis dans une mauvaise direction en alimentant la table avec les valeurs des autres tables au lieu des clés primaires.

Je coince sur la requête qui permettra de récupérer les clés primaire dans la table de jonction à la place des valeurs.

Récupérer la clé primaire correspondante à tel pc puis à tel combo soft+version à partie d'un formulaire qui présente les valeurs pc et combo soft+version.

0
yg_be Messages postés 23256 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 octobre 2024 1 541 > Bentux
28 juil. 2022 à 13:07

Tu ne nous rien de ton formulaire d'ajout.  

Si tu y utilises des listes déroulantes, l'idée c'est, pour les softs, d'utiliser comme source de la liste les 3 champs id, soft et version.  Peut-être sans montrer id (peut-être en lui donnant une largeur nulle).  Tandis que, quand tu récupères le contenu de la sélection pour créer un nouvel enregistrement, tu récupères la clé.

De cette façon, la clé est récupérée via la liste, pas via une requête.

0
yg_be Messages postés 23256 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 octobre 2024 1 541 > Bentux
28 juil. 2022 à 13:13

Tu nous dis peu sur tes tables: as-tu choisi d'utiliser des clés primaires qui n'utilisent pas les champs numéro de série, soft et version?
N'hésite pas à donner des faits, tels que les noms des tables, les listes des champs, ...

0
Bentux > yg_be Messages postés 23256 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 octobre 2024
28 juil. 2022 à 13:57

J'utilise en effet des liste deroulante :

|N° de série du PC|  |Nom du soft|  |version du soft|

N° de série du PC :

SELECT [PC].[Serial] FROM PC ORDER BY [Serial];

Nom du soft :

SELECT DISTINCT [Nom-Soft-NI] FROM [Soft-NI] ORDER BY [Nom-Soft-NI];

Version du soft :

SELECT [Version-Soft-NI] FROM [Soft-NI] WHERE [Nom-Soft-NI]=[Link-Soft] ORDER BY [Version-Soft-NI];

Ensuite j'ai un bouton Enregistrer qui déclenche une requête d'ajout et je pensais pouvoir modifier cette requête.

INSERT INTO [Link-PC-Carte-NI] ( [Link-PC], [Link-Carte-NI], [Link-SN-Carte-NI] )
SELECT [Formulaires]![f-Link-PC-Carte-NI]![Link-PC] AS Expr1, [Formulaires]![f-Link-PC-Carte-NI]![Link-Carte-NI] AS Expr2, [Formulaires]![f-Link-PC-Carte-NI]![Link-SN-Carte-NI] AS Expr3;

P.S  : C'est une requête pour ajouter des cartes mais c'est idem pour les softs

0
Bentux > yg_be Messages postés 23256 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 octobre 2024
28 juil. 2022 à 14:02

Pour les tables le plus simple est une image

0
blackmefias_3350 Messages postés 707 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 23 septembre 2024 59
Modifié le 27 juil. 2022 à 21:34

Bonjour ,

je pense que le plus simple est de faire  un formulaire en mode création pour tous les champs de la table contenant les les pc.  que vous nommerez par exemple :  F_Parc_Informatique 

Puis, toujours en mode création , créer un formulaire (sous formulaire) pour les softwares  que vous nommer par exemple SF_Softwares   SF = sous formulaire  changer quelques paramètres tels que l'affichage. pour cela vous devez allez sur le carré former entre les règles de gauche et du haut du formulaire .  voir  point Jaune sur l'image suivante .

           Mais ce n'est pas tout, car maintenant vous  allez devoir  changer le mode d'affichage de ce formulaire pour le mettre en mode "Feuille de données "   voir image ci dessous 

il suffit de sélectionner à droite de "Affichage par défaut" la ligne  "formulaires continus "  et changer en "feuille de données"  ainsi vous aurez dans la partie du sous formulaire  un affichage comme ceci

Vous devez vous assurer que les champs comportent les relations suivantes avec les cardinalités  Attention ceci ce fait 

juste après la création des deux tables. Dans mon cas ce sont les tables   T_Ordinateurs et T_Softwares . 

Attention de ne pas confondre les relations et les liaisons entre les tables.  elles n'ont pas les même fonctions. 

Vous pouvez aussi choisir de passer par les requetes .   

Pour ce qui est de mettre des champs au format " liste déroulante "  ,vous  devez alors non pas les créez depuis un champ d'une table, mais  comme objet indépendant. 


0

Bonjour et merci pour la réponse très complète.

Ça me donne des idées pour autre chose mais ne répond pas vraiment à ma problématique d'alimentation pour ma table intermédiaire (ou alors je n'ai pas tout compris :) )

0
blackmefias_3350 Messages postés 707 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 23 septembre 2024 59
Modifié le 28 juil. 2022 à 17:23

Bonjour,

je vais reprendre tout de A à Z  étape par étape avec des images .

La première chose à faire est de créer les tables 

Une fois que les tables ont été créés et enregistrées , nous allons créer les relations

        pour que la relation ait lieu entre les tables, il nous faut ajouter un champs ID_Ordinateurs dont le type est Numérique dans la table  T_Softwares  . Pour ajouter le champ, vous devez faire un click droit sur le nom de la table T_Softwares vous ferez ainsi apparaitre une fenêtre avec plusieurs options , vous sélectionnez " création de table"  .

A la suite de cette table ouverte en mode création, on ajoute donc le champ ID_Ordinateurs  qui est de type "Numérique" .

 Ajout du champ  ID_ordinateur

A la suite de cela, nous créons la relation qui va du champ  ID_Ordinateur de table T_Ordinateurs  vers ID_ordinateur de la table T_Softwares  comme montré ci dessus . 

Nos relations sont créés,

Une fois fait , nous allons maintenant créer la requête qui fera la jointure entre les tables .

Jointure (informatique) — Wikipédia (wikipedia.org) 

aller sur créer puis création  de requête dans la barre menu d'Access.  puis faite Ajouter des  tables, sur votre droite, vous verrez les différentes tables qui compose votre base de données.  dans mon exemple, je n'ai que deux tables 

je prends les deux tables et les mets au centre de la partie requête1.

Je fais en sorte de mettre toutes les données (*) de la table T_ordinateurs dans la première case  et dans les 4 suivantes je mets les champs un à un case après case de la table T_Softwares  voir ci-dessus .

je ferme la requête et l'enregistre . 

Passons maintenant aux formulaires, pour cet exemple, je crée 3 formulaires.

Un formulaire contenant les champs de ma table T_ordinateurs  que j'enregistre sous le nom de F_Ordinateur

  Un autre pour les champs de la table T_Softwares , mais que l'on enregistre sous le nom de SF_Softwares

Une fois que j'ai créé mon sous formulaire,  je sélectionne l'objet Text du champ ID_Ordinateur de mon sous formulaire. Dans les propiétés de celui-ci, sur l'onglet données, je sélectionne la propriété Source de contrôle et je lui adresse ID_Software. puis dans Contenu, je mets T_ordinateur ;  origne de la source sur Table/Requête et colonne liée sur 3(nombre de colonnes). Enfin je vais dans l'onglet Format, et sur Nbr Colonne je mets 3.

puis pour finir, je crée le formulaire qui va recevoir le formulaire et le sous formulaire  et dont le nom sera F_infoPC.

Une fois fait, je sélectionne le cadre du sous formulaire et le lui attribue les propriétés suivantes :

Ci ce n'est déjà pas fait j'en profite pour changer l'affichage du résultat du sous formulaire en mode Feuille de données

Pour afficher ce formulaire  une fois terminer 

A vous maintenant de créer des boutons pour une meilleurs navigation sur le enregistrements de la table T_ordinateurs 


0

Merci c'est très clair.

Je pars en congés donc je ferais les tests à mon retour.

0

Du coup j'ai jeté un œil quand même ^^

La solution que vous me proposez va, si j'ai bien compris, me permettre d'aller chercher les liens entre Soft et PC mais d'alimenter ce lien...

0