如何在主晶体报告公式中添加子报表中的值

时间:2013-10-25 14:23:05

标签: c# winforms crystal-reports

下面是我的水晶报告结构(如图所示),我使用以下公式获取Fee Total

If{DataTableDoctorInfo.Fee_Unit}="Percent" Then
formula =  ({DataTableDoctorInfo.Fee}/100)*{DataTable1.Number of Patient}
Else 
formula={DataTableDoctorInfo.Fee}*{DataTable1.Number of Patient}* Sum ({DataTableDrmonthlyData.Payable Amount})
End If

现在我还想在我的公式中添加子总数我在subreport的列中有sum列值,现在我想在上面的公式中使用这个总和像这个

 formula =  ({DataTableDoctorInfo.Fee}/100)*{DataTable1.Number of Patient}* {that sum value which I am getting in sub report}

DrMonthlySubRepoPatient是我在section 3中的图片中显示的子报告,我是如何实现这一目标的? 我在FeeTotal的Main report公式中尝试了此代码

WhilePrintingRecords;
Shared CurrencyVar myTotal;
myTotal :=myTotal;

If{DataTableDoctorInfo.Fee_Unit}="Percent" Then
formula =  ({DataTableDoctorInfo.Fee}/100)*{DataTable1.Number of Patient}* myTotal
Else 
formula={DataTableDoctorInfo.Fee}*{DataTable1.Number of Patient}* Sum ({DataTableDrmonthlyData.Payable Amount})
End If

和子报告中的此公式为Payble amount字段

WhilePrintingRecords;
Shared CurrencyVar myTotal := Sum ({DataTableDrmonthlyData.Payable Amount})

但它给出了以下错误,我该如何解决?

`The remaining Text does not appear to be part of the formula `

enter image description here

1 个答案:

答案 0 :(得分:1)

子报表中的formuala缺少分号:

WhilePrintingRecords;
Shared CurrencyVar myTotal := Sum ({DataTableDrmonthlyData.Payable Amount});

编辑:

看到屏幕截图后,我认为您的报告结构不是很好。有关如何构建报告,请参阅此post的答案。另一件非常重要的事情是公式的放置,以及使用链接子报表的可能性。有关如何在报表和子报表之间传递值的详细信息,请阅读此post。 我会将所有内容都放在Page Header中的黑线之上。创建一个组1并将所有内容放在黑线下面。以患者人数为基础。现在,您的子报表需要“高于”您的费用总计公式,以便费用总计可以访问该值。 子报表中公式的语法应为

WhilePrintingRecords;
Shared CurrencyVar myTotal := Sum ({DataTableDrmonthlyData.Payable Amount});

然后在您的主公式中,您可以像这样声明变量

WhilePrintingRecords;
Shared CurrencyVar myTotal := myTotal;

并在公式的其余部分使用它。

我认为您的问题是报告的结构。