我可以在运行时将Crystal Report中的字段移动到另一个位置吗?

时间:2011-04-15 20:19:31

标签: crystal-reports

我正在为各种客户生成发票。有些客户有销售津贴。对于那些我希望显示额外销售限额单位和总成本列的客户。

如果任何最高销售成本总计= 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

当客户没有销售限额时

------------------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

目标是将此功能放入单个报告中,而不是在获得销售限额时知道要为哪个客户运行哪个报告。

我知道我们可以压制字段,当我尝试合并时,我在中间右侧有空白,这取决于我放置字段的位置,结果是不可接受的。有没有办法在满足条件时将字段移动到不同的LEFT位置?这将是报告范围,而不是在每个详细记录上进行评估。

1 个答案:

答案 0 :(得分:4)

如果您创建两个标题部分和两个详细信息部分,并在每个部分中都包含所需的字段和标题,则会更容易。根据sales-allowance字段(Isnull({table.sales_allowance})中是否存在值来抑制相关的标题/详细信息部分。如果无法确定,请使用参数字段来驱动抑制公式。

**编辑**

报告将有两个标题部分(HA和HB)和两个详细部分(DA& DB)。 HA& DA和HB一起工作。 D B。对有销售津贴的客户使用'A'套装;不为客户使用'B'套装。将相关字段添加到每个部分和标题; 相应的空间

设置HA&的抑制公式DA到:

//suppress section if there IS NOT a sales allowance
Not(Isnull({table.sales_allowance}))

设置HB&的抑制公式DB到:

//suppress section if there IS a sales allowance
Isnull({table.sales_allowance})

您无需使用此方法抑制任何单个字段,从而消除了间距问题。

**编辑** 虽然水晶报表对象确实有X(左),Y(顶部),宽度和高度属性,但只有X和宽度支持条件公式(CF)。您可以通过将字段的X属性的条件公式设置为另一个值来移动字段。

但是,这种方法难以维持。每个领域的CF都需要“记住”两个位置:可见和隐藏。此外,如果将来添加另一个字段,则需要检查每个“可移动”字段,以确保其CF中的定位准确。