0

我正在使用 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# 开发人员交谈并要求他们重新设计我们传递参数的方式?

感谢您的任何帮助和讨论。

4

1 回答 1

1

记录选择公式永远不会添加到命令对象的查询中。

我不确定 CR SDK 是否支持命令对象修改(但我知道它支持只读访问)。

Command 对象确实支持可以通过编程方式访问的参数(在 2008 年,它们可以是多值参数)(它们被转换为报表中的参数字段)。

由于查询的复杂性,我假设您正在使用 Command 对象。如果您可以将复杂性推到 SQL 视图中,然后使用“视觉链接”专家来创建您的查询,您将拥有更大的灵活性。

于 2011-09-13T13:41:35.393 回答