PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Recherche dans un tableau de structure récurcif
Recherche dans un tableau de structure récurcif
Débuté par Stéphane, 28 jan. 2025 10:41 - 2 réponses
Membre enregistré
2 messages
Posté le 28 janvier 2025 - 10:41
Bonjour,

j'aimerai faire une recherche dans un tableau de structure récurcif.

Voici la structure :

ST_REF_STOCK est une Structure
sRef est une chaîne
xQteNomenclature est un numérique
xQteStock est un numérique
xQteFabrication est un numérique
xQteVente est un numérique
tabRef est un tableau de Variant
FIN


La déclaration du tableau :
tabRefStock est un tableau de ST_REF_STOCK

Voici ce que cela donne quand c'est rempli :





La question est comment faire pour récupérer l'indice de la référence "FIX PLSABS"

j'ai essayer de la manière suivante :

TableauCherche(tabRefStock,tcLinéaire,":tabRef.sref","FIX PLSABS")

mais rien ne fonctionne (j'arrive à récupérer 1er niveau PLSABS400X150)

Si quelqu'un à une idée ou une méthode différente :)
Membre enregistré
1 029 messages
Posté le 28 janvier 2025 - 11:02
Bonjour,
Avez-vous jeté un coup d'œil aux tables hiérarchiques.
Vous deviez trouver une méthode dans la doc.
Cdlt
Message modifié, 28 janvier 2025 - 11:02
Membre enregistré
2 messages
Posté le 28 janvier 2025 - 12:22
Bonjour,

Merci pour ce retour, mais c'est principalement pour être utiliser avec des services, donc sans IHM, d’où le problème ;)

Voici un début de réponse : utilisation de procédure récursive

ex:

pour écrire une valeur sur une référence : piEcritValeur(tabRefStock1,"FIXATION PLENUM ABS",2)
pour lire cette valeur : piLitValeur(tabRefStock1,"FIXATION PLENUM ABS"))


PROCÉDURE INTERNE piEcritValeur(tabRef,sRefCherche,xQteStock)
POUR TOUT tabRefStock DE tabRef
SI tabRefStock.sRef = sRefCherche ALORS
tabRefStock.xQteStock = xQteStock
SORTIR
FIN
SI tabRefStock.tabRef..Occurrence > 0 ALORS
piEcritValeur(tabRefStock.tabRef,sRefCherche,xQteStock)
FIN
FIN
FIN

PROCÉDURE INTERNE piLitValeur(tabRef,sRefCherche)
nValeurRetour est un entier
POUR TOUT tabRefStock DE tabRef

SI tabRefStock.sRef = sRefCherche ALORS
nValeurRetour = tabRefStock.xQteStock
SORTIR
FIN
SI tabRefStock.tabRef..Occurrence > 0 ALORS
nValeurRetour = piLitValeur(tabRefStock.tabRef,sRefCherche)
FIN
FIN
RENVOYER nValeurRetour
FIN