Crystal reports Crystal Report 2011:公式字段错误

Crystal reports Crystal Report 2011:公式字段错误,crystal-reports,report,formula,Crystal Reports,Report,Formula,抱歉,解释这个wierd bug可能需要很长的时间。我相当肯定,与其说是公式代码的问题,不如说是我错过了一个bug或设置。我有一个名为{@Calc\u all}的公式,基本上它有以下公式重复用于不同的支付类型,例如租金、支出、租金总额、租金小计、租金总额等 shared numberVar Curr_Gross_Total_GT; Curr_Gross_Total_GT := Curr_Gross_Total_GT + {@Pay_Value_Gross_Rent_PA}; 基本上是一个大的计

抱歉,解释这个wierd bug可能需要很长的时间。我相当肯定,与其说是公式代码的问题,不如说是我错过了一个bug或设置。我有一个名为
{@Calc\u all}
的公式,基本上它有以下公式重复用于不同的支付类型,例如租金、支出、租金总额、租金小计、租金总额等

shared numberVar Curr_Gross_Total_GT;
Curr_Gross_Total_GT := Curr_Gross_Total_GT + {@Pay_Value_Gross_Rent_PA};
基本上是一个大的计算场。然后我有另一个公式,它将该值调到正确的行,例如小计行或总计行,如下所示:

公式名称:支付价值总额租金总额总额

代码:

我遇到的问题是,我在该报告中更新了一个不相关的公式,它影响了这些公式字段的总数。要纠正上述示例中的此问题,我需要删除我在上面的
{@Calc\u all}
中显示的代码,保存公式,重新打开
{@Calc\u all}
并粘贴回完全相同的公式,然后再次显示正确的值。我不能删除
{@Calc_all}
中的所有信息,以后再重新填充它需要是受影响的特定公式

这是我需要的设置吗?这是一个有补丁的bug吗?? 这是一个真正的痛苦,因为我不知道什么总数受到影响,每次我需要更改字段时,都需要协调这个大报告

提前谢谢 任何建议都将不胜感激


更新: 我想问题在于我的计算公式。也许我没有在变量中正确声明和存储值?基本上,下面重复了8-10种其他付款类型

WhilePrintingRecords; 
shared numberVar CYMAT:= CYMAT +{@CYMAT_combined}; 
shared numberVar CYMAT_Comp:= CYMAT_Comp + if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined}; 
shared numberVar CYMAT_GT:= CYMAT_GT +{@CYMAT_combined}; 
shared numberVar CYMAT_GT_Comp:= CYMAT_GT_Comp+ if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined};
shared numberVar CYMAT_Inactive:= CYMAT_Inactive +{@CYMAT_combined};
shared numberVar CYMAT_Spec:= CYMAT_Spec +{@CYMAT_combined};
shared numberVar CYMAT_Spec_Comp:= CYMAT_Spec_Comp + if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined};
打印记录时;
共享的numbervarcymat:=CYMAT+{@CYMAT\u combined};
共享编号为CYMAT_Comp:=CYMAT_Comp+如果{lease_det1.No_of_Sales_Month}<24,则0其他{@CYMAT_combined};
共享号码为CYMAT_GT:=CYMAT_GT+{@CYMAT_combined};
共享编号为CYMAT_GT_Comp:=CYMAT_GT_Comp+如果{lease_det1.No_of_Sales_Month}<24,则0其他{@CYMAT_combined};
共享号码为CYMAT_Inactive:=CYMAT_Inactive+{@CYMAT_combined};
共享编号为CYMAT_Spec:=CYMAT_Spec+{@CYMAT_combined};
共享编号为CYMAT_Spec_Comp:=CYMAT_Spec_Comp+如果{lease_det1.No_of_Sales_Month}<24,则0其他{@CYMAT_combined};

对于初学者,如果您使用变量跟踪运行总计,那么您需要在所有相关公式的开始处使用
whileprinting records
,否则您无法确保您的记录在总计计算之前都已正确分组和排序。首先尝试一下,看看这是否能解决问题。对不起,Ryan,Calc_all公式中有一些打印记录。只拿出一点点大配方谢谢!嗨,瑞安,我只是想澄清一下你的答案。我有Calc_All formula字段,在其中我声明了多个变量以及变量中需要存储的内容。我是否需要在每次申报开始时都有打印记录?我过去从来没有这样做过……不,只要使用一次
,而每个公式打印记录就可以了。您还可以尝试使用summaries(特别是相当于
Sum()
函数)代替公式和变量。谢谢您的帮助。最后终于解决了。是我最近输入的一个公式的问题。仍然不知道为什么它会影响这些字段的总和,但现在在我删除它并重新处理IF语句后效果很好。
WhilePrintingRecords; 
shared numberVar CYMAT:= CYMAT +{@CYMAT_combined}; 
shared numberVar CYMAT_Comp:= CYMAT_Comp + if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined}; 
shared numberVar CYMAT_GT:= CYMAT_GT +{@CYMAT_combined}; 
shared numberVar CYMAT_GT_Comp:= CYMAT_GT_Comp+ if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined};
shared numberVar CYMAT_Inactive:= CYMAT_Inactive +{@CYMAT_combined};
shared numberVar CYMAT_Spec:= CYMAT_Spec +{@CYMAT_combined};
shared numberVar CYMAT_Spec_Comp:= CYMAT_Spec_Comp + if {lease_det1.No_of_Sales_Month} < 24 then 0 else {@CYMAT_combined};