Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 报告问题_C#_Sql Server 2008_Ssrs 2008_Crystal Reports 2010 - Fatal编程技术网

C# 报告问题

C# 报告问题,c#,sql-server-2008,ssrs-2008,crystal-reports-2010,C#,Sql Server 2008,Ssrs 2008,Crystal Reports 2010,我正在开发一个应用程序,它需要生成包含datagrid数据的报告,因为它包含多个动态过滤器。我的筛选当前从SQL查询获取结果集,这会导致以下问题:我无法将多个where筛选器发送到SSRS或Crystal reports,因为它不允许我将字段绑定到动态生成的查询 这是我的问题:有没有办法在where语句中创建具有无限数量条件的报告,或者创建具有动态where子句的存储过程,以便我可以将其与CR或SSR一起使用?如果没有,是否有任何报告引擎允许我在where子句中连接该过滤器 注意:我正在使用C

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

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


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

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

where (@param is null or @param = field)
因此,当@param未定义为null时,则不应用过滤器。您可以构建较长的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)
  ...

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

这不起作用,因为没有定义参数的数量。一个用户只能过滤一个字段,而另一个用户可以很好地使用5+过滤器。我不认为用for循环为报告中的每个参数生成这个值是非常干净的。你说的参数数量没有定义是什么意思?它必须在报告中定义,否则用户将无法选择要应用的过滤器。这就是我的意思,用户是定义过滤器的人,我需要使用用户当时拥有的过滤器过滤报告,类似于过滤数据网格中的所见即所得报告。在Crystal Reports或SSR中可能发生这样的事情吗?现在我明白了。你的问题是关于WHERE语句,所以我假设你已经在SSRS中设置了参数,而你没有。您正在寻找在报表本身中添加动态过滤器的方法。不幸的是,在SSRS中,您必须定义报告参数,以便用户可以对其进行筛选。