仅显示Crystal Reports中序列的最后一个序列

时间:2015-09-04 15:05:53

标签: crystal-reports

我有一个报告,偶尔会在一个组中有多个详细记录。在这种情况下,我只想显示序列中的最后一个。我有一个与每条记录关联的序列号,因此我需要抑制组中除最大序列号之外的所有细节行。

我尝试使用全局变量重新计算每个详细记录的最大值,但我还没有能够编写一个公式,在打印时,可以使用此最大序列号来抑制如果行不包含等于最大序列号的值。

3 个答案:

答案 0 :(得分:0)

根据我的理解,你有这样的数据组织:

Data1      Data2  SeQuencenumber 
1          a      1
2          b      1
2          c      2
2          d      3

根据我的理解,您希望输出看起来像(按Data1分组):

Data1      Data2  SeQuencenumber 
1          a      1
2          d      3

为此,您需要编写详细的公式部分,该部分将比较您当前的详细序列号和该组的所有计数(Data1)。右键单击您的详细信息部分,然后在此处enter image description here

编写公式

公式如下:

if {SequenceNumber} = count ({SequenceNumber},{Data1}) then true 
else false

希望它有所帮助,如果您有任何其他问题可以随时提出。

答案 1 :(得分:0)

尝试这样:

Shared Stringvar array concatenate;

concatenate:=concatenate+CStr(Sequencenumber);

现在处于抑制细节状态:

Shared Stringvar array concatenate;
if Maximum(concatenate)=Sequencenumber
Then false
else true

答案 2 :(得分:0)

我尝试过类似于KuKeC的解决方案,但使用最大功能而不是计数。但是在查看KuKeC解决方案时,我终于看到当细节中的日期与参数日期不匹配时,我已经在抑制细节带,但最大函数是给出所有数据的最大值,无论是否显示。

所以我首先需要添加一个公式字段,只有当数据日期与参数日期匹配时才会返回序列号

if {PSLRegister.PSLRPPStartDate} = {?PP_Start_Date} then
  {PSLRegister.PSLRSeqNo}
else
  0

然后我在等式中使用此公式字段来抑制详细记录

Maximum({@SeqIfDateMatch}, {TrnsltEmployee.TSEmployeeID}) <> {PSLRegister.PSLRSeqNo}

感谢所有