I realize this question is several months old and you have probably found an answer already, but here's how I would do it.
Because multi-select parameters store their selections in an array, you might do something like this:
WhileReadingRecords
StringVar array foundPOs;
Local Numbervar i;
If OnFirstRecord then
(
foundPOs := MakeArray({PO Field})
)
Else
(
if not {PO Field} in foundPOs then
(
i := uBound(foundPOs) + 1;
redim preserve foundPOs;
foundPOs := {PO Field};
);
);
""
Put this on the report in the same section where you show each PO number (PO group header?) The "" at the end means it won't display anything, but it will calculate.
You'll then create another formula to display a list of the selected POs that were not found. It would look something like this:
whileprintingrecords;
Stringvar array foundPOs;
Stringvar notFoundPOs := "";
Local Numbervar i;
If uBound({?PO Parameter}) = uBound({foundPOs}) then
notFoundPOs := "All selected POs were found"
Else
(
for i := 1 to uBound({?PO Parameter})
(
if not ({?PO Parameter} in foundPOs) then
notFoundPOs := notFoundPOs + ", " + {?PO Parameter};
);
);
right(notFoundPOs, length(notFoundPOs) - 1_
This should put the POs that aren't found in a comma-delimited list that you can put in either the report header or report footer.
-Dell