点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,我正在尝试使用两个Number类型参数字段来使用Crystal Reports来确定月份的日期范围。 该报告将一直工作到两个参数具有相同的月份为止。 底部的记录数正确,但没有显示在屏幕上。
这是我所拥有的:
参数字段:
BegMonth(类型:数值列表:静态)
EndMonth(类型:数值列表:静态)
我的值为:
1-1月
2月2日
3月3日
等
Under Value选项:允许离散值:True
正在报告->选择专家->报告
如果({{EMPLOYEE.DEPARTMENT} ="信息"
和ToNumber({@ MMBdate})> = ToNumber({?BegMonth})
和ToNumber({@ MMBdate})<= ToNumber({?EndMonth}))
然后是
否则为假
我要怎么做才能使报表中显示同一月的数据?
请勿在Select Expert中使用" If"语句! 通常,Crystal无法将其转换为SQL并将其发送到数据库,因此它将所有数据带入内存并在那里进行过滤。
这可能会导致报告显着变慢。相反,我会执行以下操作:
修改您的参数以使"类型"为数字而不是字符串,并提供"静态"值列表。 将月份数字放在值列中,将月份名称放在描述列中-这应该会自动为您提供所需的格式。
您不会显示{@MMBdate}公式是什么 这样做,但我可能还会尝试使用数据库所使用的语法中的SQL表达式从日期字段中将月份作为数字提取。 在Select Expert中使用Crystal公式(不是IsNull())可确保Crystal无法将选择条件发送到数据库,以进行更有效的处理。 但是,SQL表达式是由数据库评估的,因此在适当使用它们时,它们可以使您的报告更快。
如果您在创建SQL表达式时需要帮助,请告知我所使用的数据库类型,以及 还要发布{@MMBdate}的公式,以便我为您提供帮助。
-Dell
我将{@MMBdate}公式更改为此: p>
这将为您提供相同的结果,但处理较少。 更好的做法是创建一个SQL表达式,该表达式将使用SQL而不是Crystal公式返回生日的月份。 您没有说要连接到哪种数据库,但是如果是SQL Server,则表达式将为:
或 如果是Oracle,它将是:
您当前的SQL表达式无法满足您的需要,因为SQL表达式不是 打算像您一样用于完整查询。 我希望如果您从"选择专家"中剔除该部分,您将获得返回的数据。 但是,这不能满足您过滤掉这些状态的需要。 您可能最终不得不使用命令(SQL Select语句)为报表提供所有数据,而不是将表链接在一起。 有关如何执行此操作(包括如何为此设置参数)的信息,请参见此处的博客文章: https://blogs.sap.com/2015/04/01/best-practices-when-using-commands-with-crystal-reports/。 如果不确定如何编写查询,请转至数据库>>显示SQL查询,复制Crystal生成的查询,然后将其粘贴到此处,以便我为您提供帮助。 还请让我知道您要连接的数据库类型。
-Dell
一周热门 更多>