sql - SSRS 在报告中没有显示记录但查询返回结果

标签 sql tsql reporting-services sql-server-2012

我有一个问题,根据 SSRS。
我正在使用 MSSQL Server management studio 2012 和 BIDS Visual Studio 2008 进行报表设计。

我有一个带有一些多值参数的报告和一个存储过程,它返回记录。

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

如果您需要任何其他信息,请告诉我。我只是想可能有人面临同样的问题并且知道回应。

最佳答案

我会猜测并说这是“如何”传递多值参数。就个人而言,在处理 SSRS 时,我使用 View 、表函数或只是选择,因为 SSRS 可以 native 理解:

Where thing in (@Thing)

实际上在 SSMS 中的意思是:
Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)

我猜你的 proc 正在使用一个字符串,它实际上是一个逗号分隔的数组。当您执行一个采用字符串数组(如“1,2,3,4”)的参数并且您正在使用“文本”参数之类的东西来处理该过程时,该参数接受多个值,您可以指定或从查询中获取,您基本上需要'如果您的过程采用包含数组的字符串值,则加入“参数”。 EG:名为 dbo.test 的 Proc 执行返回值 1,2,4 的行,参数 ids 显示如下:
exec dbo.test @ids = '1,2,4'

如果我想用这个值在 SSRS 中运行 proc 并且我有一个名为“IDS”的多值参数,我将不得不在 SSRS 中的函数中手动组装数组,例如:
=JOIN(Parameters!IDS.Value, ",")

通过将逗号分隔值链中的多个值连接在一起,本质上告诉 proc 运行参数“IDS”。您可以在左侧 Pane 的数据集中执行此操作,其中列出了“参数”,而不是指定参数,就像 [@IDS] 一样,您单击“Fx”并放入上面的函数。

出于这个原因,我非常支持 View 、选择和表函数,因为您可以使用谓词逻辑来处理这些。

关于sql - SSRS 在报告中没有显示记录但查询返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18461273/

相关文章:

tsql - 按性能随机排序

mysql - 选择 "toDate"中包含 NULL 的日期范围

tsql - 请帮助将 Tsql "implicit joins"转换为显式的

reporting-services - 如果value = null,则为“”,否则将发出SSRS EXPRESSION值

mysql - 如何使我的 SELECT 查询更有效率?

sql - 如何中止触发器中多行的插入

sql-server - 无法将 Power BI 报表发布到本地报表服务器

reporting-services - Visual Studio 报表服务器项目中的 SSRS 子文件夹

javascript - 仅从表单更新 sql 表中的最后一条记录

MySQL:如果在第二个表中找到匹配的 id 并添加缺少的内容,如何在第一个表中获取 "overwrite"数据