选择公式传递不使用SQL命令对象

时间:2011-09-13 11:44:59

标签: crystal-reports crystal-reports-xi

我正在使用Crystal Reports XI。我们将Crystal Reports嵌入到用C#/ ASP.net编写的共享点站点中。我们的Web开发人员在代码中实例化报告,并通过附加到Select Formula对象传递选择标准。

我遇到的问题是,当我使用SQL命令对象时,选择公式不会作为where子句传递给sql server。这会导致查询整个结果集,然后在服务器上进行限制。对于非常大的表,这会导致性能受到重大影响。

这是一个例子:     SELECT foo.id,foo.code,foo.name     来自foo foo

选择标准显示为:     {Command.name}喜欢“someName”

如果我然后运行报告,则查询整个foo表,然后晶体报告整个集合的限制。

如果我基于没有命令对象的表来执行此操作,则WHERE子句将附加到sql查询,并且所有限制都在db级别完成。

我假设发生这种情况是因为SQL命令可能非常复杂,并且总是不可能在底部添加WHERE子句。那么我的问题是,有什么好方法可以强制进行某种传递。我是否应该与C#开发人员交谈,并要求他们重新设置我们传递参数的方式?

感谢您提供任何帮助和讨论。

1 个答案:

答案 0 :(得分:1)

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

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

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

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