0

我正在开发一个应用程序,该应用程序需要生成包含数据网格数据的报告(包括多个动态过滤器)。我的筛选当前从导致以下问题的 SQL 查询中获取结果集:我无法将多个 where 筛选器发送到 SSRS 或 Crystal 报表,因为它不允许我将字段绑定到动态生成的查询。

这是我的问题:有没有办法在 where 语句中创建具有无限条件的报告,或者创建一个带有动态 where 子句的存储过程,以便我可以将它与 CR 或 SSRS 一起使用?如果没有,是否有任何报告引擎可以让我在 where 子句中连接该过滤器?

注意:我使用 C# 4.0 以及 SQL Server 2008 Express(安装了 SSRS)和 SAP 的 Crystal Reports for Visual Studio 2010 库。

4

2 回答 2

0

在 Crystal Reports 中进一步挖掘之后,我发现使用命令和参数可以将 where 语句的一部分连接到查询中,这在一定程度上解决了我的问题。这不是报告应该如何完成的,所以我会尝试找到一种更清洁的方法来做到这一点。SSRS 只是不支持这一点,在存储过程的情况下,您必须使整个查询成为您执行的字符串,然后从该存储过程结果中查询,就好像它是一个表一样,坦率地说,这不值得麻烦.

于 2012-07-17T11:43:51.103 回答
0

在定义过滤器时添加过滤器的一个简单技巧是在 where 子句中添加以下代码:

where (@param is null or @param = field)

因此,如果@param未定义(空),则不应用过滤器。您可以构建更长的 where 子句,例如:

where (@param1 is null or @param1 = field1)
  and (@param2 is null or @param2 = field2)
  and (@param3 is null or @param3 = field3)
  and (@param4 is null or @param4 = field4)
  ...
于 2012-07-13T14:16:59.367 回答