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 1 1 Groep,Kenmerk,Waarde,Product %Library.String 0 %Library.String 0 Prod.Product 0 Waarde kan meerder velden bevatten door ";" gescheiden %Library.String 0 Verwijderen van de waarden van een bepaald kenmerk en een bep. product 1 code Groep:%Library.String,Kenmerk:%Library.String,PRNr:%Library.Integer 1 code Groep:%Library.String,Kenmerk:%Library.String,PRNr:%Library.Integer,Waarde:%Library.String Openen van het object Prod.Kenmerk.MetaDefintiie code Prod.Kenmerk.MetaDefinitie Als KenmNaam en KenmWaarde gegeven zijn (optioneel), kan gestart worden van een meer beperkte array.]]> 1 code Groep:%Library.String,Ref:%Library.String="Local",KenmNaam:%Library.String="",KenmWaarde:%Library.String="" Verwijderen van de producten die andere waarden heeft voor het kenmerk dan het doorgegevene 1 code Groep:%Library.String,Ref:%Library.String="Local" Als CompareObj mee doorgegeven wordt, overruled deze de standaard vergelijking Waarde=WaardeInput.]]> 1 code Groep:%Library.String,Kenmerk:%Library.String,WaardeInput:%Library.String,Ref:%Library.String="Local",CompareObj:Prod.Kenmerk.VertaalTransAbstract 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 kenmerk niet gedefinieerd is. 1 code Groep:%Library.String,Kenmerk:%Library.String,WaardeInput:%Library.String,Ref:%Library.String="Local" Uitbreiding op SPBeperkExcl(ude) : CompareType bepaalt het criteria om de waarden te vergelijken met WaardeInput. Mogelijke waarde voor CompareType: "E" - Exacte match; "GN" - alle Groter dan (of gelijk aan), Numeriek; "KN" - alle Kleiner dan (of gelijk aan), Numeriek; "L" - Lijst waarin de waarde moet voorkomen Bijzondere waarde voor kenmerk : "$COMB$" (macro=$$$KenmCombine) - WaardeInput is een expressie die geƫvalueerd wordt. 1 Groep:%Library.String,Kenmerk:%Library.String,WaardeInput:%Library.String,Ref:%Library.String="Local",CompareType:%Library.String="E" Tellen van de producten in de @Ref 1 code Ref:%Library.String="Local" %Library.Integer Geeft een array met de waarden van een kenmerk. De waarden die nog mogelijk zijn worden met een 1 gemarkeerd. Het mogelijk zijn betekent dat er producten geselecteerd zijn die die waarde hebben. Indien Ref leeg is dan wordt er niet gecontroleerd of een waarde nog mogelijk is. 1 code Groep:%Library.String,Kenmerk:%Library.String,ValueRef:%Library.String="KenmerkVal",Ref:%Library.String="" Analoog aan SPKenmerkWaarden, maar deze geeft de lijst van de KenmerkWaarden terug als een $LB(). 1 code %Library.List 0) lbValues=$$pkvSortedList(lbValues,MetaSort) 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) lbNew ; Else Vreemde elementen (i.e. komen niet voor in lbBaseValues, maar wel in lbToSort) toevoegen aan lbNew If $LL(lbNew) %Library.SQLQuery paGroup:%Library.String KortTekst AS PrOms, Product->ProductNr AS PrNr FROM Prod_Kenmerk.DataIndex WHERE (Groep = :paGroup) ORDER BY PrNr]]> %Library.SQLQuery SELECT Product, ID, Groep, Kenmerk, Waarde FROM Prod_Kenmerk.DataIndex ORDER BY Waarde %Library.CacheStorage ^Prod.Ken.DataIndexD ^Prod.Ken.DataIndexD ^Prod.Ken.DataIndexI ^Prod.Ken.DataIndexS %%CLASSNAME node 0