【问题标题】:Crystal Reports 2008 - Trouble resetting a shared variableCrystal Reports 2008 - 重置共享变量时出现问题
【发布时间】:2012-01-20 19:57:04
【问题描述】:

更新:会不会是另一个问题?

我很确定我已经采取了正确的步骤,但如果这里出现不同的问题怎么办?

我有多个参数,似乎它可能正在被重置,但随后子报告可能会在所有参数上进行计算,因此即使它正在重置,它也会在我拥有的所有多个工作订单号上重新计算在我的工单号参数中指定。

背景

我有一个 Crystal Report 2008 报表,其中包含几个子报表,它们将它们的总值共享回主报表以供操作。

子报表适用于单个记录,但在选择多个记录时不会重置,从而导致它们显示所有记录的总数。

这是一个已知解决方案的问题,但是当我尝试在报告中应用它时,它似乎没有按预期工作。

我很确定这是公式的语法或放置它们的布局的问题。

已知步骤

问题在于 Crystal 子报告没有专门重置;这是设计使然。

要强制重置报表,您必须在运行子报表之前在记录级组(即不是报表标题)中插入一个公式,将共享变量设置回零。

报告布局

  • 报告标题(被禁止)
  • 页眉(基本页面信息)
  • Group Header 1a -- 共享变量重置公式
  • Group Header 1b -- 工单信息
  • 详细信息 -- 人工估算子报告和材料估算子报告
  • 组页脚 1a -- 显示两个子报表总计的公式
  • Group Footer 1b -- 工单的详细描述(无子报告)
  • 报告页脚(被禁止)
  • 页脚(基本页面信息)

人工子报表中的共享变量创建公式(放置在子报表页脚中):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts := Sum ({R_PFWR_ESTS_LABBYCODE.TOTALLABORCOSTS});

主报表中的共享变量公式(放置在主报表,页脚 1a):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts

共享变量重置公式(放置在主报表中,组标题 1a):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts:=0;

谁能看出我哪里出错了?谢谢!

【问题讨论】:

    标签: layout syntax crystal-reports formula crystal-reports-2008


    【解决方案1】:

    如果您的计算是标量值,您可能需要考虑使用SQL-Expression field,而不是子报表。该字段的 SQL 可以关联到主查询,可能是分组字段,您的情况。

    ** 编辑 **

    您似乎想要详细信息部分中每一行的人工成本摘要,并且您希望在组页脚中获得这些摘要。假设这是准确的,请按照以下步骤操作:

    • 创建 SQL 表达式:

      --{%TOTAL_LABOR_COST} ( 选择总劳动力成本 FROM R_PFWR_ESTS_LABBYCODE --链接到主报告中的一个字段,可能会在详细信息部分的每一行中更改 - 在哪里 -- 分组,如有必要 - 通过...分组 )

    • 在详细信息部分放置字段

    • 在此字段中插入摘要;放在第 1 组页脚中

    【讨论】:

    • 不确定我的理解是否正确。当我使用一个参数值运行时,我的计算是正确的。当我使用参数的多个参数值运行它时,子报表不会在显示下一个项目时将自身重置为零,因此我获得了所有显示报表的总数,而不仅仅是该报表。这似乎是我见过的解决方案的常见问题。你能解释一下 SQL 表达式的方法会有什么不同吗?谢谢!
    • 感谢您提供额外的见解!如果您不介意,请查看我更新的问题。我想知道这是否可能是一个不同的问题。子报告似乎是根据为该参数输入的所有参数值计算的,而不是根据我们正在查看的任何报告记录一次计算一个。
    【解决方案2】:

    我发现了问题所在。

    真正的问题

    问题不在于公式没有被重置(它是)。

    问题在于我将报表字段链接到子报表参数的方式。

    我已将主报告的参数链接到子报告的参数。这实际上将参数中的每个值都传递给了子报表,因此它每次都使用所有值运行。

    修复

    为了解决这个问题,我更改了链接到子报表参数的值。

    我将它从主报告参数字段(有多个值)更改为主报告中列出工作订单号的值(确保它永远只有一个)。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2023-04-10
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多