首页 > 解决方案 > 公式字段中的过滤功能

问题描述

我是 Crystal Reports (2016) 的新手,现在我正在为我们部门进行评估。我从 CR 访问 SAP Info set 表中的数据。到目前为止,这工作正常。

我的数据具有以下格式并逐行读取:

源数据

如您所见,有时有一个位置为 100 和 105 的 Q 编号,有时只有位置 100。所以有时有重复的 Q 编号。我需要的是,在现有位置 105 的情况下只使用这条线。如果没有位置 105,请使用位置 100 的行。这应该消除重复项,只留下我需要的信息。

将新的公式字段放入我的报告中后,它应该显示如下数据(右侧的列):

所需数据

我已经尝试过使用“onlastrecord”功能,但没有所需的结果。在两个位置的情况下,它只使用位置为 105 的线。但不显示仅位置 100 的 Q 数。

到目前为止,这是我的代码:

如果 onlastrecord=true 并且 (tonumber({Z_QM_INFOSET_CR.VIQMFE-POSNR})=0100)

然后 {Z_QM_INFOSET_CR.QMEL-QMNUM} 否则

if (tonumber({Z_QM_INFOSET_CR.VIQMFE-POSNR})=0105)

然后 {Z_QM_INFOSET_CR.QMEL-QMNUM}

我希望我的情况可以理解..

提前非常感谢!

标签: crystal-reportsreport

解决方案


我知道您需要一个在这些情况下打印值的公式:

  1. 位置为 105 时显示 q 数
  2. 当位置为 100 并且相同的 q 编号没有 105 时显示 q 编号

所以,我建议一种方法来检查下一条记录和最后一条的轮廓条件。

试试这个公式:

if {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0105" 
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else if onlastrecord and {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0100"
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else if {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0100"
and next({Z_QM_INFOSET_CR.QMEL-QMNUM}) <> {Z_QM_INFOSET_CR.QMEL-QMNUM}
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else ""

推荐阅读