Предполагая, что все значения «A» входят до значений «AS», я бы использовал массив для хранения найденных кодов.
Во-первых, инициализируйте массив, это может быть в заголовке отчета или если результаты сгруппированы по студенту в заголовке группы студентов.
WhilePrintingRecords;
Global StringVar Array CodesFound;
Redim CodesFound[1];
CodesFound[1] := "";
//print nothing
"";
Затем обновите список в деталях
WhilePrintingRecords;
Global StringVar Array CodesFound;
If Left({table.Name},2) = "A "
Then (
If CodesFound[1] = ""
Then (
CodesFound[1] := {table.Code};
)
Else (
Redim Preserve CodesFound[UBound(CodesFound) + 1];
CodesFound[UBound(CodesFound)] := {table.Code};
);
);
//print nothing
"";
Наконец, в разделе условного подавления:
WhilePrintingRecords;
Global StringVar Array CodesFound;
Local BooleanVar found := false;
Local NumberVar i;
If Left({table.name},2) = "AS"
Then (
For i := 1 to UBound(CodesFound) do (
If CodesFound[i] = {table.Code}
Then found := true;
);
//suppress if not found
Not(found);
)
Else
//Not an "AS", don't suppress
false;