|
Best of Support |
|
|
Filtering items in a collection |
|
Issue
How to filter information out of a collection with a minimum of blue code in the document and a fairly tight script.
Solution
I created a script, "OfficerListGFS" to set up government officers lists and collections for OfficerPrimary, OfficerSecond, OfficerFinancial, and OfficerOther off a list of details on government officers.
Text of Script:
%[| Set up Primary Officers]
%[OfficerPrimary=createobject('GFDialogobject.dialogobject')]
%[OfficerPrimary.isacollection=true]
%[ForEachBlock("R", Parties.Officer)]
%[IfTrue((R.FunctionMC = 'Primary Officer'),OfficerPrimary.Add(R))]
%[EndBlock()]
%[OfficerPrimaryL = Lists.FormatColField(OfficerPrimary,'NameTE', ', ', ', and ')]
%[| Set up Secondary Officers]
%[Variables.Clear('R')]
%[OfficerSecondary=createobject('GFDialogobject.dialogobject')]
%[OfficerSecondary.isacollection=true]
%[ForEachBlock("R", Parties.Officer)]
%[IfTrue((R.FunctionMC = 'Secondary Officer'),OfficerSecondary.Add(R))]
%[EndBlock()]
%[OfficerSecondaryL = Lists.FormatColField(OfficerSecondary, 'NameTE', ', ', ', and ')]
%[| Set up Financial Officers]
%[Variables.Clear('R')]
%[OfficerFinancial=createobject('GFDialogobject.dialogobject')]
%[OfficerFinancial.isacollection=true]
%[ForEachBlock("R", Parties.Officer)]
%[IfTrue((R.FunctionMC = 'Finance Officer'),OfficerFinancial.Add(R))]
%[EndBlock()]
%[OfficerFinancialL = Lists.FormatColField(OfficerFinancial, 'NameTE', ', ', ', and ')]
%[| Set up Other Officers]
%[Variables.Clear('R')]
%[OfficerOther=createobject('GFDialogobject.dialogobject')]
%[OfficerOther.isacollection=true]
%[ForEachBlock("R", Parties.Officer)]
%[IfTrue((R.FunctionMC = 'Another Officer'),OfficerOther.Add(R))]
%[EndBlock()]
%[OfficerOtherL = Lists.FormatColField(OfficerOther,'NameTE', ', ', ', and ')]
Now you can use various collections:
Officers
%[ForEachBlock('P', OfficerPrimary)]
Primary Officer: Title %[P.TitleTE]
Primary Officer: Name %[P.NameTE]
%[EndBlock()]
%[ForEachBlock('P', OfficerSecondary)]
Secondary Officer: Title %[P.TitleTE]
Secondary Officer: Name %[P.NameTE]
%[EndBlock()]
%[ForEachBlock('P', OfficerFinancial)]
Finance Officer: Title %[P.TitleTE]
Finance Officer: Name %[P.NameTE]
%[EndBlock()]
%[ForEachBlock('P', OfficerOther)]
Other Officer: Title %[P.TitleTE]
Other Officer: Name %[P.NameTE]
%[EndBlock()]
And you can use the string lists:
Primary Officers are %[OfficerPrimaryL]
Secondary Officers are %[OfficerSecondaryL]
Financial Officers are %[OfficerFinancialL]
Other Officers are %[OfficerOtherL]
Thanks to Paul Marvin for sharing his approach.
Seth G. Rowland, Esq.