我有一个Crystal Reports 2008文件,其中包含一个接受多个值的字符串参数。我需要在记录选择中使用它。我一般都知道你可以做类似
的事情{MyTable.MyField} In Join( {?MyParam}, "," )
但我需要用户输入可能出现在更长字段值中的值,即子字符串。我试过了
NumberVar index;
For index := 1 To UBound( {?MyParam} ) Do (
{?MyParam}[index] In {MyTable.MyField}
)
虽然它没有抛出错误,但它似乎对记录选择没有任何影响(也就是说,报告显示相同数量的记录)。
更具体地说,MyTable
有三条记录,MyField
分别包含文字Red Blue Green
,Green Yellow Purple
和Red Yellow Orange
。使用该参数,用户应该能够键入值red
和blue
,以便过滤到第一个和第三个记录。
答案 0 :(得分:0)
创建自定义公式以比较两个数组的重叠值:
//Array_Overlap
Function (Stringvar Array a0, Stringvar Array a1)
Local Numbervar i;
Local Numbervar j;
Local Booleanvar found:=false;
For i := 1 To Ubound(a0) Do (
For j := 1 To Ubound(a1) Do (
If a0[i]=a1[j] Then (
found:=true;
Exit For;
)
)
);
found;
在记录选择公式(RSF)中引用它:
// space delimited
AND Array_Overlap( Split({MyTable.MyField}, " "), {?MyParam} ) = TRUE