水晶报表、子报表和共享变量

5

我在页面头部有一个名为 @InitVars 的公式,其中包含以下类似的行:

shared numbervar runWaste:=0;

在Details 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。

然而,在另一个子报告Details az和主报告Details w(作为测试),我有以下公式@test:

shared numbervar runWaste;
runWaste;

两个地方都显示为0.00。

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

我正在使用Crystal Reports版本11.0.0.895。

3个回答

9
问题在于@InitVars在页面头部而不是报表头部。它会在每个页面顶部将变量重置为0。
将@InitVars移动到报表头部可以解决这个问题,这样子报表Details az中就能出现正确的数字。
当我在主报表中包含该变量时,仍然会看到一些奇怪的行为,但由于那只是用于调试,而不是主要目标,所以我不关心。

1

我有一个模糊的记忆,现在很难证实,关于共享变量从子报表中无法传回的问题。还在寻找;幸好今天是星期五下午。

编辑:我找不到我要找的东西,所以有一个一般性的想法。检查评估时间,并确保主报表后面的部分在子报表之后进行评估(WhilePrintingRecords可能会对您有帮助)。


嗯,将whileprinting记录添加到@test中使其在页面页脚中工作,但在详细信息中仍然不正确。它在后面的页面上也是错误的... - LeBleu
你确定它没有被重置在其他地方,无论是在主报告中的其他位置还是在子报告中的某个位置? - Adrien

0

来自文章添加子报表,查找小计和总计(到主报表)

Crystal Reports是一款商业智能应用程序,用于从各种数据源设计和生成报告。子报表是主报表的子报表,可以嵌入主报表中。子报表在构建报告方面非常有用。
添加子报表可以在主报表中查找每个子报表的小计和总计。
主报表
子报表1
小计:sum(LabTotal)
子报表2
小计:sum(ItemTotal)
总计
子报表是Crystal Report中非常有用的选项。假设我们想要查找
添加Crystal报告
1.添加新项目-> Crystal报告
2.如果我们想要创建自己的格式的Crystal报告,请从Crystal报告库中选择“作为空白报告”
3.右键单击“数据库字段”中的“数据库字段”,然后从数据库中选择表,然后进行链接(如果需要)
4.从“详细信息部分”右键单击并添加子报表。
5.重复我们在主报告中所做的相同事情,并将所需字段拖到详细信息部分的子报告中。
例如:我们正在创建劳动力报告,可以计算出总劳动费率
在公式字段中-名称LabTotal
WhilePrintingRecords; Shared NumberVar LabTotal := Sum({PC_LABOUR_DETAILS.Total})
({PC_LABOUR_DETAILS)--表格总计---字段
并将LabTotal的总和添加到小计字段中
如果我们要在主页面上添加另一个子报表,则再次右键单击“详细信息部分”并添加新部分->详细信息(b)。重复步骤4和5。在这里,我们正在添加第二个子报表以获取材料的小计,材料的小计可以计算为
在公式字段中-名称ItemTotal
WhilePrintingRecords; Shared NumberVar ItemTotal := Sum({PC_MATERIAL_DETAILS.Total})
({PC_MATERIAL_DETAILS)--表格总计---字段
并将ItemTotal的总和添加到小计字段中
主报表
要查找两个子报表的总计
在公式字段名称-GrandTotal
WhilePrintingRecords; Shared NumberVar ItemTotal; Shared NumberVar LabTotal; NumberVar TotalAmount; TotalAmount := ItemTotal+LabTotal; TotalAmount

@kristina:请不要在没有给原作者适当的信用的情况下,仅仅复制粘贴其他网站的内容。谢谢。 - Bill the Lizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接