【问题标题】:Crystal reports, sub-reports, and shared variablesCrystal 报表、子报表和共享变量
【发布时间】:2011-02-01 08:04:56
【问题描述】:

我在页眉中有一个公式@InitVars,其中包括以下和类似的行:

shared numbervar runWaste:=0;

在详细信息 v 中,我有一个子报告,其中有一个公式 @SetRunWaste:

shared numbervar runWaste;
if (OnFirstRecord) then
(
if not(isnull({x.x-or})) and 
not(isnull({x.y-override})) and {x.y-override} = true then
runWaste:={x.x-or} 
  else
runWaste:= {x.x}
);
runWaste

我可以在子报告中看到这个公式的输出是 18.00。

但是,在另一个子报告中,详细信息 az 和详细信息 w(作为测试)的主报告中,我都有以下公式 @test:

shared numbervar runWaste;
runWaste;

在这两个地方,它都显示为 0.00。

为什么显示的是 0 而不是 18?

我使用的是 Crystal Reports 版本 11.0.0.895。

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    问题在于@InitVars 在页眉中,而不是在报表页眉中。它在每一页的顶部将变量重置为 0。

    将@InitVars 移动到报告标题修复了它,因此正确的数字出现在详细信息 az 的子报告中。

    当我在主报告中包含变量时,我仍然看到一些奇怪的行为,但由于这只是为了调试,而不是主要目标,我不在乎。

    【讨论】:

      【解决方案2】:

      我有一个模糊的记忆,我现在很难证实共享变量没有从子报表传回。还在寻找;还好现在是星期五下午。

      编辑:我找不到我要找的东西,所以一般的想法。检查评估时间,并确保主报告的后面部分在子报告之后进行评估(WhilePrintingRecords 可能是您的朋友)。

      【讨论】:

      • 嗯,将whileprinting 记录添加到@test 会导致它在页脚中工作,但在细节上仍然不正确 w。在后面的页面上也是不正确的......
      • 您确定它没有在某处重置,无论是在主报告的其他地方,还是在其中一个子报告中?
      【解决方案3】:

      来自Adding Sub reports ,Find Sub Total and Grand Total(To main Report)的文章:

      Crystal Reports 是一家企业 智能应用程序用于 设计并生成报告 广泛的数据源。子 报告是主要的子报告 可以嵌入到 main 中的报告 报告。子报告非常多 有助于构建报告。

      添加子报表查找小计 和每个子报告的总计 主要报告

      主要报告

      子报告 1

      小计:总和(LabTotal)

      子报告 2

      小计:总和(ItemTotal)

      总计

      子报告是非常有用的选项 水晶报告。假设我们想要 找到

      添加水晶报表

      1. 添加新项目->水晶报告
      2. 如果我们想创建我们自己的格式的 Crystal Report,请选择“As a Blank 报告”来自水晶报告库
      3. 右键单击数据库字段中的“数据库字段”,然后 然后从数据库中选择表 制作链接(如有必要)
      4. 右键单击“详细信息部分”并添加子报告。
      5. 重复我们在主报表中所做的相同操作并拖动 详细信息部分所需的字段 报告

      例如:我们正在创建劳工报告 总劳动力率可以是 计算为

      在公式字段中——名称 LabTotal

      WhilePrintingRecords;共享号码变量 LabTotal := 总和 ({PC_LABOUR_DETAILS.Total})

      ({PC_LABOUR_DETAILS) -- 表总计 ---字段

      并将 LabTotal 的总和添加到 sub 总场

      如果我们要添加另一个子报告 离子主页,再次右键单击 在“详细信息部分”并添加新的 部分->详细信息(b)并重复步骤4 和 5 这里我们添加了第二个子 材料和小计报告 材料可以计算为

      在公式字段中——名称 ItemTotal

      WhilePrintingRecords;共享号码变量 ItemTotal := 总和 {PC_MATERIAL_DETAILS.Total})

      ({PC_MATERIAL_DETAILS) --table 总计 -- 字段

      并将 ItemTotal 的总和添加到 sub 总场

      主要报告

      求两个子的总和 报告

      在公式字段名称-GrandTotal

      WhilePrintingRecords;共享号码变量 项目总计;共享 NumberVar LabTotal; NumberVar 总金额;总金额:= 项目总计+实验室总计;总金额

      【讨论】:

      • @kristina:请不要在没有适当注明原作者的情况下从其他网站复制和粘贴内容。谢谢。
      猜你喜欢
      • 2011-12-29
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      相关资源
      最近更新 更多