Opbouw van de index van de DataDefinitie, om deze index ook door SQL toegankelijk te maken is dit in een apart object opgeslagen. Bij de DataDefinitie opbject zitten de waarden van een kenmerk een product in een lijst. In dit index object zit alle waarden separaat. persistent %Library.Persistent 0 %Library.String 0 0 0 0 0 0 0 0 %Library.String 0 0 0 0 0 0 0 0 %Library.String 0 0 0 0 0 0 0 0 Waarde kan meerder velden bevatten door ";" gescheiden %Library.String 0 0 0 0 0 0 0 0 0 1 1 Groep,Kenmerk,Waarde,UnID 0 Verwijderen van de waarden van een bepaald kenmerk en een bep. product 0 1 code Groep:%Library.String,Kenmerk:%Library.String,UnID:%Library.Integer 0 0 0 1 code Groep:%Library.String,Kenmerk:%Library.String,UnID:%Library.String,Waarde:%Library.String 0 0 Openen van het object Kenm.Basis.MetaDefintiie 0 0 code 0 Kenm.Basis.MetaDefinitie 0 Verwijderen van de producten die andere waarden heeft voor het kenmerk dan het doorgegevene 0 1 code Groep:%Library.String,Ref:%Library.String="Local" 0 0 Als CompareObj mee doorgegeven wordt, overruled deze de standaard vergelijking Waarde=WaardeInput.]]> 0 1 code Groep:%Library.String,Kenmerk:%Library.String,WaardeInput:%Library.String,Ref:%Library.String="Local" 0 0 Verwijderen uit de array @Ref de producten waarvan er geen kenmerkwaarde bestaat die gelijk is aan WaardeInput. SPBeperkExcl(ude) verwijdert ook de producten waarvan het kenmerjk niet gedefinieerd is. 0 1 code Groep:%Library.String,Kenmerk:%Library.String,WaardeInput:%Library.String,Ref:%Library.String="Local" 0 0 Tellen van de producten in de @Ref 0 1 code Ref:%Library.String="Local" 0 %Library.Integer 0 Geeft een array met de waarden van een kenmerk. De waarden die nog mogelijk zijn worden met een 1 gemarkeerd. Het mogelijk zijn betekend dat er producten geselecteerd zijn die die waarde hebben. Indien Ref leeg is dan wordt er niet gecontroleerd of een waarde nog mogelijk is. 0 1 code Groep:%Library.String,Kenmerk:%Library.String,ValueRef:%Library.String="KenmerkVal",Ref:%Library.String="" 0 0 Analoog aan SPKenmerkWaarden, maar deze geeft de lijst van de KenmerkWaarden terug als een $LB(). PRArray als .Local doorgeven 0 1 code 0 1 %Library.List 0 0) lbValues=$$pkvSortedList(lbValues,MetaSort) Set MetaObj="" ; Do MetaObj.%Close() Quit lbValues pkvSortedList(lbToSort,lbBaseValues,AddUnsorted) ;New lbNew,LenTS,i Set lbNew="" Set LenTS=$LL(lbToSort) For i=1:1:$LL(lbBaseValues) Do:($LF(lbToSort,$LI(lbBaseValues,i))>0) . Set lbNew=lbNew_$LB($LI(lbBaseValues,i)) . Set:($LL(lbNew)=LenTS) i=$LL(lbBaseValues) ; Quit For-loop, want alle elementen van lbToSort zitten nu ook in lbNew Quit:(+$G(AddUnsorted)=0) ; Else Vreemde elementen (i.e. komen niet voor in lbBaseValues, maar wel in lbToSort) toevoegen aan lbNew If $LL(lbNew) %Library.SQLQuery 0 SELECT UnID, ID, Groep, Kenmerk, Waarde FROM Kenm_Basis.DataIndex ORDER BY Waarde 0 %Library.CacheStorage ^Kenm.Basis.DataIndexD ^Kenm.Basis.DataIndexD ^Kenm.Basis.DataIndexI ^Kenm.Bas.DataIndexS %%CLASSNAME node 0