希望标题能够说明一切......但以防万一。我正在重新编写一些用vb.net编写的定制内部软件,用于查询数据库,收集返回的数据并在vb.net中处理它,然后将结果输出到Crystal Reports进行显示。
我们发现这令人难以置信,浪费资源,而且速度缓慢。就像我之前提到的那样,我正在重新编写这个程序,以便Crystal Report本身收集信息并显示它。今天早上我正在重新制作一个看似简单的部分,每月报告只计算总记录,总结一些事情和其他小任务。
所以我的问题是这个,用于计算返回的记录数的晶体语法是什么,即两个日期之间。(从vb端传入的参数)
我想写这个:
COUNT({Table.Column} in {?FromDate} to {?ToDate});
然后,Crystal Reports会突出显示计数内的所有内容,并告诉我这里需要一个字段。
我也试图创建一个总计,但它只计算1.如果这是正确的行动方案,请解释。
谢谢!
答案 0 :(得分:1)
Crystal报表公式语法不允许以这种方式进行条件计数。我通常使用两个单独的公式来执行此类操作:第一个用于逻辑测试填充1或0,第二个用于汇总第一个,例如。
{@ INRANGE}:
if {Table.Column} in {?FromDate} to {?ToDate} then 1 else 0
{@ sumInRange}:
sum({@InRange}
我很确定我在一个公式中取得了类似的结果,但它使代码的可读性降低,难以维护,有时需要While Printing
命令才能使公式结果无法用于其他领域报告。使用两个公式也可以在第一个公式上轻松过滤。