Bonjour,
Je développe actuellement une application pour la gestion de documentation. Chaque document peut être tagué avec 1 ou plusieurs mot-clés pour en faciliter la recherche.
J'ai donc une table T_Documents et une table T_Keywords avec une relation n/n. J'ai créé un table T_Junction qui prend la clé primaire de T_Documents et la clé primaire de T_Keywords.
Côté U/I, j'ai un formulaire qui permet à l'utilisateur d'ajouter un nouveau document à la base. Dans ce formulaire, l'utilisateur peut renseigner 1 ou plusieurs mot-clés (sous forme de liste déroulante) pour taguer le nouveau document.
J'ai une requête AddDocument qui ajoute le nouveau document à la table T_Documents. Ensuite, j'aimerais créer une requête AddJunction qui ajoute autant d'enregistrements Document_ID/Keyword_ID à la table T_Junction qu'il y a de keywords renseignés dans le formulaire.
J'ai commencé à écrire ça:
SQL pour Q_AddJunction
VBA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PARAMETERS [DocumentID] int, [KeywordID] int, INSERT INTO T_Junction (Document_ID, Keyword_ID) SELECT [DocumentID] AS Document_ID, [KeywordID] AS Keyword_ID;
Bon, de base, ça ne marche pas! Access me dit "Elément non trouvé dans cette collection" pour la ligne .Parameters("DocumentID") = 99. J'ai mis 99/99 comme dummy values pour retrouver mon enregistrement dans T_Junction si d'aventure ça marchait...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Function Add_Junction() Set qdf = CurrentDb.QueryDefs("Q_AddJunction") With qdf .Parameters("DocumentID") = 99 .Parameters("KeywordID") = 99 .Execute End With End Function
1/Voyez-vous ce qui ne marche pas dans ma définition/appelle de requête Q_AddJunction avec paramètres?
Les questions qui viendront après ça sont:
2/ comment passer en paramètre le document_ID du document qui vient d'être créé?
3/ comment réaliser une boucle sur la requête AddJunction pour autant de combo box renseignées (Me!Keyword#.Value <> "" Et Me!Keyword#.Visible = True)? (max 6)
Merci d'avance pour votre aide précieuse!
Partager