我正在使用 Crystal Reports XI。我们使用嵌入到用 C#/ASP.net 编写的共享点站点中的 Crystal Reports。我们的 Web 开发人员在代码中实例化报告,并通过附加到 Select Formula 对象来传递选择标准。
我遇到的问题是,当我使用 SQL 命令对象时,选择公式没有作为 where 子句传递给 sql 服务器。这会导致查询整个结果集,然后在服务器上进行限制。对于非常大的表,这会导致显着的性能损失。
这是一个示例: SELECT foo.id, foo.code, foo.name FROM foo foo
选择条件显示为: {Command.name} like "someName"
如果我然后运行报告,则查询整个 foo 表,然后水晶报告整个集合的限制。
相反,如果我基于没有命令对象的表执行此操作,则 WHERE 子句将附加到 sql 查询中,并且所有限制都在 db 级别完成。
我假设发生这种情况是因为 SQL 命令可能非常复杂,并且并不总是可以在底部添加 WHERE 子句。那么我的问题是,有什么好方法可以强制通过某种方式。我是否应该与 C# 开发人员交谈并要求他们重新设计我们传递参数的方式?
感谢您的任何帮助和讨论。