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.