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
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;
VBA
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
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...
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!