使用动态存储过程填充ReportViewer

时间:2015-07-06 17:23:47

标签: sql-server vb.net visual-studio-2012 stored-procedures reportviewer

我需要用这样的存储过程填写报告:

CREATE PROCEDURE [dbo].SelectDataToReport
     @table_name varchar (25),
     @period varchar (25)
AS
BEGIN
     DECLARE @mySql nvarchar (MAX)

     SET NOCOUNT ON;

     SET @mySql = 'SELECT * FROM '+@table_name+' WHERE Period = '+@period+''
     EXEC (@mySql)
END

但是报告只接受这样的存储过程:

CREATE PROCEDURE [dbo].SelectCSAT
     @Period varchar (25)
AS
BEGIN
    SELECT ID, CSAT, Period
    FROM CSAT
    WHERE Period = @Period
END

所以,我不知道是否有另一种填写报告的方法。问题是数据库表和列将被更改,并且在生成报告时,用户选择他想要的表和句点。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你要做的就是做(如果你的列数永远不变,你就不能拥有动态列)

(我一直这样做)

print @mySQL

1)然后取出该声明并将其放在存储过程的顶部 2)评论所有动态代码

3)进入ssrs并创建数据集将起作用。 4)回到你的存储过程并注释掉你的sql语句并恢复你的动态代码(别忘了放回exec(@mySql)

代码示例执行此操作

CREATE PROCEDURE [dbo].SelectDataToReport
 @table_name varchar (25),
 @period varchar (25)
AS
BEGIN
     SELECT ID , CSAT , Period FROM CSAT WHERE Period = '.'
 /*DECLARE @mySql nvarchar (MAX)

 SET NOCOUNT ON;

 SET @mySql = 'SELECT ID , CSAT , Period FROM '+@table_name+' WHERE Period = '+@period+''
 EXEC (@mySql)*/
END