使用Crystal Reports 2008中的Oracle功能更新报告以进行筛选
我有几份报告,每一份都有几张表 假设有3张表,表A、表B和表C。 我想使用以下Oracle函数来过滤同时传递报表参数的结果集:使用Crystal Reports 2008中的Oracle功能更新报告以进行筛选,oracle,crystal-reports,crystal-reports-2008,Oracle,Crystal Reports,Crystal Reports 2008,我有几份报告,每一份都有几张表 假设有3张表,表A、表B和表C。 我想使用以下Oracle函数来过滤同时传递报表参数的结果集: AND function(tableB.field1, tableB.field2, tableB.field3, {?report_parameter}) = 'S' 需要注意的事实: Oracle函数只能用于Crystal Reports中的SQL表达式和/或SQL命令 SQL表达式不能包含报表参数(因此,不是选项) Crystal Reports允许您使用SQ
AND function(tableB.field1, tableB.field2, tableB.field3, {?report_parameter}) = 'S'
需要注意的事实:
- Oracle函数只能用于Crystal Reports中的SQL表达式和/或SQL命令
- SQL表达式不能包含报表参数(因此,不是选项)
- Crystal Reports允许您使用SQL命令替换报表表,但不允许将多个表替换为单个SQL命令
- 我们不想重新构建所有报告
- 我们不希望将单个表替换为SQL命令,因为它会影响高级别的性能,因为Crystal在执行报告时不会在单个查询上转换表和SQL命令
- 此Oracle函数从其他表中选择数据,因此不能在报表自定义函数中重写
- {?report_参数}是只有应用程序才知道的信息。在将报告导出给用户之前,应用程序将填写该报告
我能做些什么来解决这个问题?不知道函数需要表和参数的确切原因,我只能给您一些模糊的、未经测试的选项。没有一个选项是理想的:
- 将Oracle函数重写为“自定义函数”(CF);记录选择公式中的参考CF;读取记录时将应用过滤器(即,该功能不会发送到数据库)
- 将函数重写为一个存储过程,该过程接受一个参数,但返回一个记录集(Crystal Reports将识别该参数);将其他表连接到存储过程。存储过程需要以支持Crystal Reports数据需求的方式编写()