我在页眉中有一个公式@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。
答案 0 :(得分:9)
问题是@InitVars位于页眉中,而不是报表头。它将每个页面顶部的变量重置为0。
将@InitVars移动到报告标题会修复它,以便在详细信息az中的子报告中显示正确的数字。
当我在主报表中包含变量时,我仍然会看到一些奇怪的行为,但由于这只是用于调试,而不是主要目标,我不在乎。
答案 1 :(得分:1)
我有一个模糊的记忆,我现在很难证实共享变量没有从子报表返回。还在寻找;这是周五下午的好事。
编辑:我找不到我要找的东西,所以一般的想法。检查评估时间,并确保主报表上的后一部分在子报表之后进行评估(WhilePrintingRecords可能是您的朋友)。
答案 2 :(得分:0)
来自文章Adding Sub reports ,Find Sub Total and Grand Total(To main Report):
Crystal Reports是一项业务 以前的情报应用程序 设计和生成报告 广泛的数据来源。子 报告是主要的儿童报告 报告可以嵌入主要 报告。子报告非常多 用于构建报告。
添加子报告查找子总计 和每个子报告的总数 主要报告
主要报告
子报告1
小计:总和(LabTotal)
分报告2
小计:总和(ItemTotal)
总计子报告是非常有用的选项 水晶报告。假设我们想要 发现
添加Crystal报告
- 添加新项目 - > Crystal报告
- 如果我们要创建Crystal Report我们自己的格式,请选择“作为空白 报告“来自水晶报告库
- 右键单击“数据库”字段中的“数据库字段” 然后从数据库中选择表 制作链接(如有必要)
- 右键单击“详细信息部分”并添加子报告。
- 重复我们在主报告中执行的相同操作并拖动 需要字段到详细信息部分 报告
醇>对于Eg:我们正在创建劳工报告 总劳动率可以 按
计算在公式字段中 - 名称LabTotal
WhilePrintingRecords;共享NumberVar LabTotal:=总和 ({PC_LABOUR_DETAILS.Total})
({PC_LABOUR_DETAILS) - 表总计 ---字段
并将LabTotal的总和添加到sub中 总场
如果我们要添加另一个子报告 离开主页面,再次右键单击 在“详细信息部分”并添加新的 部分 - >细节(b)并重复步骤4 和5我们在这里添加第二个子 报告材料和小计 材料可以计算为
在公式字段中 - 名称ItemTotal
WhilePrintingRecords;共享NumberVar ItemTotal:=总和 {PC_MATERIAL_DETAILS.Total})
({PC_MATERIAL_DETAILS) - 表总计 - 字段
并将ItemTotal的总和添加到sub中 总场
主要报告
找到两个子的总计 报告
在公式字段名称-GrandTotal
中WhilePrintingRecords;共享NumberVar ItemTotal;共享NumberVar LabTotal; NumberVar TotalAmount; TotalAmount:= ItemTotal + LabTotal;总金额