如何将多个数据传递给Crystal Report参数

时间:2018-10-11 17:52:08

标签: c# crystal-reports

如何在Crystal Report中将多个值传递给单个参数?

enter image description here

在“我的数量”字段中,我希望它成为我的输入值。我该如何实现?

int[] value = new int[listProducts.Items.Count];
        int[] mylist = new int[listProducts.Items.Count];
        foreach (ListViewItem item in listProducts.Items)
        {
            mylist = value.Select(I => int.Parse(item.SubItems[2].Text)).ToArray();
        }
returnGood.SetParameterValue("_Qty", mylist);

这在我输入13和15的报告中仅显示1个值,但仅显示13个。

1 个答案:

答案 0 :(得分:0)

您可以使用定界符在参数字段中输入一串值。然后在报表中使用Split()函数将“参数字段”解析为数组。

例如,如果您有一个名为MyParam的参数字段,并将值作为1,2,3,4传递给参数,则其结果将是一个字符串值为"1,2,3,4"的参数。然后,要创建字符串值数组,可以在“公式字段”中使用以下内容。

Stringvar Array myArray := Split({?MyParam}, ",");
MyArray[1];

然后,此公式将打印数组的第一个值。更改MyArray的索引将使您可以打印数组的其他值。

不过,我确实建议您谨慎使用此方法。由于Crystal Report的一些限制,因此像这样使用数组是一个挑战。例如,公式字段可能不会返回数组,并且将始终要求您指定特定的索引值以作为公式的标量结果返回。因此,当您不知道在数组中期望有多少个值时,要知道如何处理传递给Parameter的所有值,逻辑上可能会变得相当复杂。 “参数字段”的值必须始终是一个字符串,这样才能正常工作。因此,如果需要将数组的各个值解析为不同的数据类型,则需要在使用Split()函数之后将其转换为这些数据类型,并将其存储在新变量中。

如果您从一开始就知道在单个参数字段中期望有多少个值,通常最好是从一开始就设置多个参数字段,因为在Crystal报表中更容易使用它们。