如何将多个数据传递给 crystal 报表参数

How to pass multiple data to crystal report parameter

如何将多个值传递给 crystal 报告中的单个参数?

在我的数量字段中,我希望它成为我的输入值。我怎样才能做到这一点?

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);

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

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

例如,如果您有一个名为 MyParam 的参数字段并将值作为 1,2,3,4 传递到参数中,那么结果将是一个字符串值为 [=14 的参数=].然后要创建一个字符串值数组,您可以在公式字段中使用以下内容。

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

此公式将打印数组的第一个值。更改 MyArray 的索引将允许您打印数组的其他值。

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

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