1

我有一个带有接受多个值的字符串参数的 Crystal Reports 2008 文件。我需要在记录选择中使用它。我知道通常你可以做类似的事情

{MyTable.MyField} In Join( {?MyParam}, "," )

但我需要用户输入可能出现在更长字段值中的值,即通过子字符串。我试过了

NumberVar index;
For index := 1 To UBound( {?MyParam} ) Do (
    {?MyParam}[index] In {MyTable.MyField}
)

虽然它不会引发错误,但它似乎对记录选择没有任何影响(也就是说,报告显示相同数量的记录无论如何)。

更具体地说,sayMyTable有三个记录,分别MyField包含文本和。使用该参数,用户应该能够键入值并过滤到第一条和第三条记录。Red Blue GreenGreen Yellow PurpleRed Yellow Orangeredblue

4

1 回答 1

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
于 2012-09-21T14:46:38.750 回答