Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Sql server 求救!SSRS参数与SSMS的结果不同_Sql Server_Reporting Services - Fatal编程技术网

Sql server 求救!SSRS参数与SSMS的结果不同

Sql server 求救!SSRS参数与SSMS的结果不同,sql-server,reporting-services,Sql Server,Reporting Services,我正在制作一份SSRS报告,其中有4个下拉列表。所有这些都添加到查询中。 ID01, ID02, 开始时期, 结束时间 StartPeriod和EndPeriod是nvarchar,但它们显示的是日期。比如201401201403 我的问题是,当我运行SSR时,如果我选择所有ID01和所有ID02,我无法在201401-201405之间获得任何信息。但当我运行SSMS时,会有记录。201405之后的一切都没有问题 我的代码是 CREATE PROCEDURE ABC @ID0

我正在制作一份SSRS报告,其中有4个下拉列表。所有这些都添加到查询中。 ID01, ID02, 开始时期, 结束时间

StartPeriod和EndPeriod是nvarchar,但它们显示的是日期。比如201401201403

我的问题是,当我运行SSR时,如果我选择所有ID01和所有ID02,我无法在201401-201405之间获得任何信息。但当我运行SSMS时,会有记录。201405之后的一切都没有问题

我的代码是

    CREATE PROCEDURE ABC

     @ID01 nvarchar(2000)
    ,@ID02 nvarchar(10)
    ,@StartPeriod nvarchar(30)
    ,@EndPeriod nvarchar(30)
    AS
    BEGIN

    SELECT ID01,ID02

,CASE WHEN year(Date)='2014' and month (Date)='01'then '201401'

      WHEN year(Date)='2014' and month (Date)='02'then '201402'
                              .
                              .
                              .
      WHEN year(Date)='2015' and month (Date)='05'then '201505'

      END AS Period

INTO #tmp_ABC

FROM A

WHERE     ID01 IN (SELECT Param FROM dbo.udf_ABC(@ID01,','))

      AND ID02 IN (SELECT Param FROM dbo.udf_ABC(@ID02,',')) 
            (THIS TWO ARE DROP DOWN LIST FOR SSRS)

----------


SELECT ID01,ID02,Period

FROM #tmp_ABC

WHERE Period >= @StartPeriod AND Period <=@EndPeriod (DROP DOWN LIST FOR SSRS)

END
谁能告诉我我的报告有什么问题吗?这是我第一次用这个。请原谅我写错了格式。。。
谢谢

为什么@ID02只有10个字符长?这并没有给参数列表留下太多空间。这可能是个问题

您的存储过程似乎过于复杂-这不是问题的真正原因,但可以简化。以下是存储过程的重新工作:

CREATE PROCEDURE ABC
     @ID01 nvarchar(2000)
    ,@ID02 nvarchar(2000)
    ,@StartPeriod nvarchar(30)
    ,@EndPeriod nvarchar(30)
    AS
BEGIN

    SELECT ID01, ID02, 
      CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) AS Period
    FROM A
    WHERE ID01 IN (SELECT Param FROM dbo.udf_ABC(@ID01,','))
      AND ID02 IN (SELECT Param FROM dbo.udf_ABC(@ID02,',')) 
      AND CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) >= @StartPeriod 
      AND CAST(Year(Date) AS NVARCHAR) + Right('0' + CAST(Month(Date) AS NVARCHAR), 2) <= @EndPeriod

END

谢谢谢谢谢谢谢谢你!!!!!!!!!!!!!!这就是问题所在!!!非常感谢你!!!!如果这解决了你的问题,你应该接受这个答案,让其他人知道它已经解决了,也感谢你的投票:哦~!!很抱歉,这是我第一次用这个。我只是接受这个答案,但我没有足够的声望去投票……等我有了足够的声望,我一定会投票给你的!!