Het probleem met dit soort problemen is dat je op voorhand niet weet hoeveel takken je hebt, al wekt je afbeelding de indruk dat er 3 niveaus zijn. Dat blijkt althans uit het veld Code, wat prima te gebruiken is in een routine. Die zou dan naar de lengte van de code moeten kijken om te zien hoe vaak een opzoeklus moet worden uitgevoerd. De waarden die je opzoekt kun je in een matrix zetten, die je definieert op basis van de lengte. Ik kan mij voorstellen dat je de Hoofdcategorie en Subcategorie niet apart opslaat, maar de artikelen uit die subcategorieën wel.
Voor de code 231 maak je dus een matrix variabele van 3 dimensies. Die moet eerst de eigen naam uitlezen en de ParentID, vervolgens de code 23 opzoeken en de ParentID lezen, en als laatste de Hoofdcategorie uitlezen in de derde dimensie van de matrix.
Je krijgt dan een matrix met de volgende waarden:
tmp(1)=Diarree
tmp(2)=Maag en Spijsvertering
tmp(3)=Pijn, Griep en Ongemakken.
Deze matrix lees je in een lus in omgekeerde volgorde uit, en wijs je dan aan een string variabele toe.