我正在为各种客户生成发票。一些客户有销售津贴。对于这些客户,我想显示一个额外的销售津贴单位和总费用列。
如果任何最大销售成本总计为= 0,我想将字段移到左侧并在右侧显示销售津贴
当客户有销售津贴时
------------------Headings extend all the way across the report-----------------------------
Description Qty UOW Client Unit Cost Client Cost Sales Unit Cost Sales Cost
============================================================================================
Something 5 Each $11.00 $55.00 $5.00 $25.00
More Stuff 2 Each $20.00 $40.00 $5.00 $10.00
============================================================================================
Totals $55.00 $35.00
Run Code Online (Sandbox Code Playgroud)
当客户没有销售津贴时
------------------Headings extend all the way across the report-----------------------------
Description Qty UOW Client Unit Cost Client Cost
============================================================================================
Something 5 Each $11.00 $55.00
More Stuff 2 Each $20.00 $40.00
============================================================================================
Totals $95.00
Run Code Online (Sandbox Code Playgroud)
我们的目标是将该功能放到一个报表中,而不必知道在何时以及何时获得销售津贴的情况下为哪个客户运行哪个报表。
我知道我们可以禁止使用字段,当我尝试合并时,根据放置字段的位置,中间的右边会出现空格,结果是不可接受的。当满足条件时,是否可以将字段移动到另一个LEFT位置?这将是整个报告,而不是在每个详细记录上都进行评估。
如果创建两个标题部分和两个详细信息部分,并在每个字段中包含所需的字段和标题,则会更容易。根据sales-allowance字段中存在的值(Isnull({table.sales_allowance}),抑制相关的页眉/详细信息部分。如果无法确定,请使用参数字段来驱动抑制公式。
**编辑**
该报告将包含两个标题部分(HA和HB)和两个详细信息部分(DA和DB)。HA和DA结合使用,HB和DB结合使用。对有销售津贴的客户使用“ A”集;不为客户使用“ B”集。将相关字段添加到每个部分和标题;相应的空间。
将HA和DA的抑制公式设置为:
//suppress section if there IS NOT a sales allowance
Not(Isnull({table.sales_allowance}))
Run Code Online (Sandbox Code Playgroud)
将HB和DB的抑制公式设置为:
//suppress section if there IS a sales allowance
Isnull({table.sales_allowance})
Run Code Online (Sandbox Code Playgroud)
您无需使用此方法抑制任何单个字段,从而消除了间距问题。
**编辑**虽然Crystal报表对象确实具有X(左),Y(上),width和height属性,但是只有X和width支持条件公式(CF)。您可以通过将字段的X属性的条件公式设置为另一个值来移动字段。
但是,这种方法将很难维护。每个字段的CF都需要“记住”两个位置:可见和隐藏。此外,如果将来添加另一个字段,则需要检查每个“可移动”字段以确保其CF中的定位准确。