SSRS在报告中不显示任何记录,但查询返回结果

kar*_*rel 6 sql t-sql reporting-services sql-server-2012

根据SSRS,我有一个问题.我正在使用MSSQL Server管理工作室2012和BIDS Visual studio 2008进行报告设计.

我有一个报告,其中包含一些多值参数和后面的存储过程,它们返回记录.

现在我试图找到传递给存储过程的参数值和字符串拆分函数的问题.如果字符串以意外的形式传递,我查看了SQL服务器分析器,但事实并非如此.我在服务器中运行了确切的执行代码作为查询并返回结果.但如果我在报表设计器的预览窗格中运行报表,我将无法获得任何结果.

如果您需要任何其他信息,请告诉我.我只是觉得可能有人遇到同样的问题并知道答案.

dja*_*azz 7

我会猜测并说你是如何传递多值参数的.在处理SSRS时,我个人使用视图,表函数或只是选择,因为SSRS可以原生地理解这个:

Where thing in (@Thing)
Run Code Online (Sandbox Code Playgroud)

实际上在SSMS中意味着这一点:

Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)
Run Code Online (Sandbox Code Playgroud)

我猜你的proc是一个字符串实际上是一个逗号分隔数组.当您执行一个带有像'1,2,3,4'这样的字符串数组的参数时,您正在使用类似'Text'参数接受多个值的过程来解决该过程,您可以指定或从查询中获取您基本上需要'如果您的过程采用包含该数组的字符串值,请加入'参数.EG:Proc为dbo.test执行以返回值为1,2,4的行,参数ID如下所示:

exec dbo.test @ids = '1,2,4'
Run Code Online (Sandbox Code Playgroud)

如果我想用SSRS在SSRS中运行proc并且我有一个名为'IDS'的多值参数,我将不得不在SSRS中的函数中手动组装数组,如:

=JOIN(Parameters!IDS.Value, ",")
Run Code Online (Sandbox Code Playgroud)

基本上告诉proc通过将逗号分隔值链中的多个值连接在一起来运行参数'IDS'.您可以在左侧窗格中的数据集中执行此操作,其中列出了"参数",而不是指定参数,因为它类似于[@IDS]您单击"Fx"而是放入上面的函数.

出于这个原因,我是视图,选择和表函数的主要支持者,因为您可以使用谓词逻辑来处理这个问题.