Dans mon DataSet (qui est conservé en tant que XML), j'ai une table Area
avec trois colonnes: ID
, Name
et ParentId
. ParentId
est une clé étrangère qui renvoie à ID
, créant ainsi une hiérarchie de zones.Alternative pour les expressions récursives dans DataColumn
Je veux maintenir le chemin complet de chaque zone dans une nouvelle colonne appelée Path
, dont la valeur peut être définie de manière récursive comme
{ area.Name ; if ParentId is null
area.Path := {
{ Parent.Path + "\" + area.Name ; otherwise
J'aurais aimé mettre en œuvre cette colonne comme une colonne calculée. Malheureusement, lorsque je tente de définir la propriété Expression
à l'expression suivante
iif(isnull(ParentId, 0) = 0, Name, Parent.Path + '\' + Name)
Je reçois l'erreur suivante:
Cannot set Expression property due to circular reference in the expression.
Cela semble exclure une colonne calculée. Alors quelles sont les alternatives? C'est à dire. comment puis-je m'assurer que la colonne Path
contient toujours une valeur correcte pouvant être utilisée dans une interface utilisateur liée aux données?
Cette approche progressive ne va pas travailler lorsque le DataSet est lu à partir du XML, puisque les lignes ne sont pas nécessairement chargées dans l'ordre topologique (parents avant enfants), mais que toutes les lignes sont chargées dans la table et que les contraintes sont activées et vérifiées. –
Donc un peu de post-traitement dans le cadre de la charge, sera nécessaire (?) –