Crystal Reports:用于过滤子字符串值的多值参数

时间:2012-09-21 14:06:52

标签: crystal-reports crystal-reports-2008

我有一个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 GreenGreen Yellow PurpleRed Yellow Orange。使用该参数,用户应该能够键入值redblue,以便过滤到第一个和第三个记录。

1 个答案:

答案 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