Crystal Reports 8,共享变量和公式

时间:2009-01-20 16:19:34

标签: crystal-reports

是的,仍然与this questionthis other question中的报告相同。 是的,我知道,我是CR noob :-)无论如何,我已经专注地浏览了Google,并且出现了很多关于如何使用共享变量的教程,但我似乎无法掌握其工作原理,因为我无法实现我需要。

这些是我的公式: (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然后     'UTILE:'+ ToText(ut2_saldo)   否则如果ut2_saldo = 0那么     'Pareggio'    其他     'PERDITA:'+ ToText(ut2_saldo)

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

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

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

  • ActiveAttSaldo放置在组页脚1(活动资产子目录)中 - 按“TipoConto”分组
  • PassSaldo位于组页脚1(被动资产子页面) - 按TypoConto分组
  • UtileSaldo,AttSaldoShared和PassSaldoShared都在同一部分中声明,该部分是由CodiceSocieta(CompanyCode,英文)分组的组页脚1b(在组页脚1a中,两个子报告都存在)。

据我所知,这应该是做事的正确方法(但我可能是错的,那就是......:D)我无法查明问题。 你能帮我吗?

最诚挚的问候,

安德鲁

1 个答案:

答案 0 :(得分:1)

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

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

然而,对于我的任何一个问题,我都没有得到任何答案,然而我的问题仍然存在,但是,我仍然感到高兴,因为我仍然无法理解为什么,哦为什么!?!,水晶会崩溃或者只是消失而不会对可能发生的事情留下任何暗示。没有错误日志我知道并且在事件查看器中没有明显的迹象,没有可以解释这样的怪人。

感谢您的所有时间,

安德鲁