Crystal reports Crystal Reports:创建数组或从列中获取值

Crystal reports Crystal Reports:创建数组或从列中获取值,crystal-reports,Crystal Reports,假设我正在编写一份报告,在一个名为someTable.sometcolumn的列上。我需要的是在ReportHeader中包含所有的值。我知道我应该创建一个子报告,将此列传递给他们,并在详细信息中进行迭代,但我想知道是否可以在没有子报告的情况下执行此操作 如果我使用以下公式,我会得到正确的结果,在我的例子中是9: COUNT(someTable.someColumn) 我也尝试了下面的方法,但不起作用-它只随机取9个值中的一个 Local NumberVar i := 0; Local Str

假设我正在编写一份报告,在一个名为
someTable.sometcolumn
的列上。我需要的是在ReportHeader中包含所有的值。我知道我应该创建一个子报告,将此列传递给他们,并在详细信息中进行迭代,但我想知道是否可以在没有子报告的情况下执行此操作

如果我使用以下公式,我会得到正确的结果,在我的例子中是9:

COUNT(someTable.someColumn)
我也尝试了下面的方法,但不起作用-它只随机取9个值中的一个

Local NumberVar i := 0;
Local StringVar Array items := {someTable.someColumn};
Local StringVar output := "";
while (i < count(items)) do (
  i := i+1;
  output := output + items[i];
);

output;
localnumbervari:=0;
本地StringVar数组项:={someTable.someColumn};
本地StringVar输出:=“”;
而(i<计数(项目))做(
i:=i+1;
产出:=产出+项目[i];
);
产出;

是否可以通过迭代列来获取值?

在报告标题中不能这样做。您必须使用详细信息部分来读取每个值


想到的唯一解决方案是使用子报表。尽管您不会
将此列传递给他们,并在详细信息中对其进行迭代
。因为它只传递列中的第一个值。您可以将报表参数传递给它,它可以使用这些参数从数据库中获取列值,就像主报表一样。

我在报表页眉中找不到这样做的方法,但您可以使用以下公式将其放入报表页脚中:

global StringVar output;
output := output + {someTable.someColumn} + ",";
这将在报告生成过程中每次
someTable.someColumn
更改时执行,并将其附加到全局变量。不幸的是,它并不能使它的所有实例都保持最新—例如,如果您将它包含在某个位置的报告详细信息中,您将能够看到
输出在报告过程中的演变。在标题中,它将仅显示第一个值


注意:您不希望在此公式中设置
输出:=”
,因为这样每次都会重置该值。尽管如此,Crystal在创建变量时似乎会自动为您初始化该变量,而且我只使用上面的公式没有遇到任何错误(即,我不需要创建第二个公式来初始化
输出
)。我还包括了一个delimeter(
+”,“
),用于帮助分离每个值,但您可以轻松地删除它。

谢谢,但它没有用……无论您想对这个变量做什么,都只能在报告末尾使用它。事实上,这是我规定的限制。不幸的是,我不相信有一种方法可以在标题(报告的开头)中修改它。