如何在Crystal Reports中水平显示列的内容?

问题描述

我是水晶报告的新手。我正在为服装店应用程序创建账单报告。

我有类似的数据

prodID prodName qty rate amount salesmanID
101      saree    1   500   500   5
108      Legging  1   500   500   7

我想将报告显示为

prodID prodName qty rate amount
101      saree    1   500   500
108      Legging  1   500   500
sid : 5   7

我该如何实现?

解决方法

简而言之:使用共享变量来收集报表详细信息部分中的salespersonId,并在报告末尾打印共享变量的内容。

详细信息:

在您的报告中添加一个公式字段并将其拖到详细信息部分。公式应如下所示(替换字段名称{Befehl.salesmanID}):

// @AddToArrayVar
whileprintingrecords;
numbervar array salespersonArray;
numbervar counter;
// add only new lines
if not({Befehl.salesmanID} in salespersonArray) then
(
    counter := counter + 1;
    //The line below ensures that the size of the array does
    //not exceed 1000 values. An array can contain a maximum
    //of 1000 values.
    if counter <= 1000
    then (
        Redim Preserve salespersonArray[counter];
        salespersonArray[counter] := {Befehl.salesmanID}
    )
);

公式字段必须是详细信息部分的一部分,您可以通过字段格式将其隐藏。

然后添加第二个公式字段以打印数组内容,并将其放在详细信息之后的部分,例如报告页脚:

// @PrintFromArrayVar
whileprintingrecords;
numbervar array salespersonArray;
numbervar Counter;
stringvar salespersonslist;
numbervar i;

for i := 1 to Counter do
(
    if i > 1 then salespersonslist := salespersonslist + ',';
    salespersonslist := salespersonslist + ToText(salespersonArray[i],'');
);

salespersonslist;

P.S .:我不确定当前版本的Crystal Reports中是否仍然存在1000项限制。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...