如何使用基于参数返回数据的过程创建SSRS报告

时间:2017-01-31 17:11:56

标签: sql-server tsql reporting-services

我有一个存储过程,它根据参数@SearchType返回列数。所以首先它检查什么是参数值,然后SELECT语句返回数据。

我的问题是如何在SSRS中使用此程序?它没有给我带来任何列,所以我可以将它添加到表或矩阵中。

在SSMS中,程序运行正常。 必须有一个解决方法。

由于

enter image description here

ALTER PROCEDURE dbo.RPT_spLoadUserOpenTasks
      (
        @UserGUID varchar(8000) = NULL,
        @NoteStoreType INT = NULL,
        @DateFrom datetime = NULL,
        @DateTo datetime =NULL,
        @LineGUID varchar(8000) = NULL
      ) 

AS
 IF @SearchType = 0
 BEGIN 
       SELECT DISTINCT 
            TOP 100 PERCENT 
                Column1,
                Column2,
                Column3
                --other columns
         FROM 
                  dbo.tblNoteEntities  (nolock) 
           --some other JOINs here 
         WHERE tq.LineGuid IN (SELECT * FROM @LineTable)
                AND               
                  (@UserGUID IS NULL OR tblNoteRecipients.UserGUID = @UserGUID) 
             ORDER BY  Column1
      RETURN
END
--------------------------------------------------------------------------------
if @SearchType = 1  --eq and eq access 
BEGIN 
SELECT DISTINCT 
            TOP 100 PERCENT 
                Column4,
                Column5,
                Column6
         FROM 
                  dbo.tblNoteEntities  (nolock) 
           --some other JOINs here 
         WHERE tq.LineGuid IN (SELECT * FROM @LineTable)
                AND               
                  (@UserGUID IS NULL OR tblNoteRecipients.UserGUID = @UserGUID) 
             ORDER BY  Column1
      RETURN
END
--------------------------------------------------------------------------------
if @SearchType = 3 --And so on 

1 个答案:

答案 0 :(得分:1)

您必须在数据集中手动定义查询输出的列。

由于列名和数字不是静态的,请尝试通过让每个查询返回相同数量的列,这些列具有不需要的列的空数据。

对于参数的每个值,创建包含所需列的表并根据参数的选定值设置表可见性(例如,如果参数有3个值,则必须创建3个表,但每次只能看到一个表)。