2009-01-20 131 views
0

是的,仍然是在this questionthis other question中的报告。 是的,我知道,我是一个CR noob :-)无论如何,我已经仔细地浏览了Google,并且有很多关于如何使用共享变量的教程,但我似乎无法掌握它的工作原理,因为我无法实现我需要的。Crystal Reports 8,共享变量和公式

这些是我的公式: (ActiveAttSaldo,在正值资产子报表中创建) whileprintingrecords; global numbervar att_saldo; att_saldo:= SUM({@ImportoEuroConto},{SP_EstrattoConto.TipoConto})

(PassSaldo,在负资产子报表创建) whileprintingrecords; global numbervar pass_saldo:= 0; pass_saldo:= SUM({@ImportoEuroConto},{SP_EstrattoConto.TipoConto})

(UtileSaldo,在主报告创建) whileprintingrecords; shared numbervar ut2_saldo; ut2_saldo:= {@AttSaldoShared} - {@ PassSaldoShared};

如果ut2_saldo> 0,则 '效用值:' + ToText(ut2_saldo) 否则如果ut2_saldo = 0然后 'Pareggio' 别的 '珀迪塔:' + ToText(ut2_saldo)

(PassSaldoShared,创建在主报告中) whileprintingrecords; global numbervar pass_saldo; pass_saldo; pass_saldo;

(AttSaldoShared,在主报告中创建) whileprintingrecords; global numbervar att_saldo; att_saldo;

的想法是有一个“最后的平衡”,但变量始终为0,所以我总是看到“Pareggio”,而不是正确的值。所有的公式都正确放置:

  • ActiveAttSaldo被放置在组尾1(活性资产subrep) - 分组由“TipoConto”
  • PassSaldo被放置在组尾1(被动资产subrep) - 由TypoConto分组
  • UtileSaldo,AttSaldoShared和PassSaldoShared都在相同的部分,它是由CodiceSocieta(企业编码,英语)分组组页脚1B(在组页脚1a中两个子报表都存在)声明。

据我所知,这应该是做事情的正确方法(但我可能是错的,那是......:D),我无法确定问题的真正原因。 可以请你帮我吗?

最好的问候,

安德鲁

回答

1

好吧,我设法用6(SIX)的公式,两个在报告的顶部声明并初始化变量为0(零),两个用于每个子做报告来计算总和,最后在主要报告中显示两个实际显示值:-)

无论如何,我们重新编写了报告(感谢我们的一位SQLServer主服务器),现在几乎所有的复杂性(子代表,共享变量) 消失了! woooooooo hooooooooooo! :-)

但是,我对这个事实没有得到答案,其中一些问题仍然存在 - 但是 - 打开了,因为我仍然不明白为什么,哦为什么!水晶会崩溃或者完全消失而不留下任何可能发生的暗示。没有错误日志我知道,并没有明显的迹象在事件查看器,没有这将解释这样的怪人。

谢谢你的时间都是一样的,

安德鲁