在具有两个列的Crystal报表中垂直记录数字

时间:2014-05-30 03:39:27

标签: crystal-reports

我有一个包含2列的报告,我正在尝试格式化使用多列,在布局中我检查了Accross然后Down,因为我想显示每列的记录余额:

+----+------------+----+------------+
|No. | Data       |No. | Data       |
+----+------------+----+------------+
|1   | Data1      |2   | Data2      |
|3   | Data1      |4   | Data2      |
|5   | Data1      |6   | Data2      |
+----+------------+----+------------+

+----+------------+----+------------+
|No. | Data       |No. | Data       |
+----+------------+----+------------+
|1   | Data1      |2   | Data2      |
|3   | Data1      |    |            |
+----+------------+----+------------+

但是我希望显示连续垂直的记录编号,如下所示:

+----+------------+----+------------+
|No. | Data       |No. | Data       |
+----+------------+----+------------+
|1   | Data1      |4   | Data2      |
|2   | Data1      |5   | Data2      |
|3   | Data1      |6   | Data2      |
+----+------------+----+------------+

我试图创建一个公式,但结果不是我想要的。你能帮我解决一下我的问题吗?

2 个答案:

答案 0 :(得分:1)

确定遵循以下方法:

  1. 获取两个子报告并详细说明:

    first sub report for Data1 //limit the size of sub report to number of columns
    Second sub report for Data2 // place adjacent to sub report 1 and limit size
    
  2. 在子报告1

  3. 创建公式@Reset并放入Report Header

    Shared NumberVar count;
    count:=0;
    

    再创建一个公式@Display,并在问题的No字段中详细说明。

    Shared Numbervar count;
    Shared Numbervar store;
    count:=count+1;
    store:=count;
    count;
    

    现在您已经为column1编号了数据。

    1. 转到coulmn2 measn Data2的第二个子报告。在你的问题中
    2. 再创建一个公式@Display,并在问题的No字段中详细说明。

      Shared Numbervar store;
      store:=store+1;
      

      现在您的号码为data2

      让我知道任何问题。

答案 1 :(得分:0)

我找到了答案,这里的公式:

NumberVar nMidData := RoundUp(count({Table.data})/2);
NumberVar nRecord := count({Table.data});

WhilePrintingRecords;
if ((RecordNumber>=1) and (RecordNumber mod 2)=1) then
(
    NumberVar RecNoLeft:=RecNoLeft+1;
)
else if ((Recordnumber>=2) and (RecordNumber mod 2)=0) then
(
    NumberVar RecNoRight:=RecNoRight+1;
    nMidData+RecNoRight;
)

我将此公式详细列为No列。