Bonjour,
J'essaye de travailler sur un champs qui contiendrait une liste un peu à la manière des champs multivalués...
J'ai une table [Produits] qui contient des enregistrements sous la forme:
Produit / Liste (des sous produits utilisés)
"Produit1", "sous_prod2;sous_prod9;sous_prod15"
"Produit2", "sous_prod9,sous_prod22"
"Produit9", "sous_prod15;sous_prod21,sous_prod3,sous_prod1"
Une table [Sous_Produits] sous la forme:
Sous_Produit/ Désignation / Rangement
"sous_prod1","vis de 12", "tirroir2"
"sous_prod2","écrous de 12", "tirroir21"...
Une table [Produits à transférer] qui à la même structure que le table [Produits] et qui me sert de table tampon.
Lorsque je travaille sur un produit (ajout ou suppression de sous produits), les sous produits à partir desquels il est fabriqué sont chargés dans ma table [Produits à transférer] au moyen d'un requette.
Afin de pouvoir appeler chacun des "sous produits" d'un "produit" j'ai recours à un split réalisé dans une requête grace à la fonction découpe définie dans un module global:
Fonction découpe
Requette appelant le sous produit(1) d'un produit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Function Decoupe(str As String, separateur As String, INDEX As Long) As String Decoupe = Split(str, separateur)(INDEX) End Function
La fonction découpe utilise un index afin d'extraire sous produit par sous produit mais le problème c'est que je ne vois pas comment connaitre le nombre (i) de "sous produits" d'un produit afin de pouvoir itérer ma requette de 0 à i ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 MySql = "INSERT INTO [Produits à transferer] (Sous_Produit, Désignation, Rangement)" MySql = MySql + " SELECT decoupe([Produits].[Liste],';',1), [Sous_Produits].Désignation, [Sous_Produits].Rangement" MySql = MySql + " FROM [([Produits] INNER JOIN [Sous_Produits] ON decoupe([Produits].[Liste],';',1)=[Sous_Produits].[Sous_Produit]" MySql = MySql + " WHERE ([Produits].Produit = """ & Produit & """ ) ;" bdd.Execute MySql
Je précise que je suis sous access 2003 et que je ne peux donc pas utiliser les champs multivalués...
Alors si vous avez des idées...
Merci d'avance.
Partager