【问题标题】:For an SSRS report with multi select parameters, when I 'select all' for a parameter having a long list of values, report throws a javascript error对于具有多选参数的 SSRS 报告,当我为具有一长串值的参数“全选”时,报告会引发 javascript 错误
【发布时间】:2016-10-17 08:52:36
【问题描述】:

这是我得到的错误:“错误:Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。从服务器返回的状态代码是:500:”。 我怀疑这是因为 URL 长度超过 2083 个字符。尽管此问题的一些解决方案是将以下标记添加到 reportserver 文件夹和 ReportManager 文件夹中的 web.config 文件,但它对我不起作用。有人可以帮忙吗?

标签-->

【问题讨论】:

  • 如果您选择超过 1 个值,而不是全部,仍然会出现错误怎么办?
  • 感谢您的回复@pinwar13。仅当所选值的数量超过特定数量时,我才会收到错误消息。否则,报告工作正常。当我尝试从 Visual Studio for SSRS 的预览选项卡中预览报告时,我没有看到任何错误。

标签: ssrs-2008


【解决方案1】:

该错误是由于下拉菜单中的值过多,并且 URL 很可能超过了您指出的最大长度。解决此问题的方法是在下拉列表本身中创建一个选项以“全选”并让存储过程完成其余工作。

如果您使用查询来填充参数的可用值,则可以执行 UNION 以包含“全选”选项。

注意使用此解决方案,您需要有一个用户定义的函数来拆分值,因为 SSRS 以逗号分隔格式将多个值发送回 SQL Server。

CREATE FUNCTION dbo.udf_Split
(    
    @RowData NVARCHAR(MAX),
    @Delimeter NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE 
(
    ID INT IDENTITY(1,1),
    Data NVARCHAR(MAX)
) 
AS
BEGIN 
    DECLARE @Iterator INT
    SET @Iterator = 1

    DECLARE @FoundIndex INT
    SET @FoundIndex = CHARINDEX(@Delimeter,@RowData)

    WHILE (@FoundIndex>0)
    BEGIN
        INSERT INTO @RtnValue (data)
        SELECT 
            Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))

        SET @RowData = SUBSTRING(@RowData,
                @FoundIndex + DATALENGTH(@Delimeter) / 2,
                LEN(@RowData))

        SET @Iterator = @Iterator + 1
        SET @FoundIndex = CHARINDEX(@Delimeter, @RowData)
    END

    INSERT INTO @RtnValue (Data)
    SELECT Data = LTRIM(RTRIM(@RowData))

    RETURN
END
GO

为参数填充可用值的查询将如下所示:

SELECT 'Select All' AS "FilterValues"

UNION

SELECT FilterValues
FROM tbl_AvailableValues

您获取数据的过程如下所示:

CREATE PROCEDURE usp_GetData @FilterValues NVARCHAR(MAX)

AS

BEGIN

    IF @FilterValues = 'Select All'
    SELECT *
    FROM tbl_Data;

ELSE 

    SELECT *
    FROM tbl_Data
    WHERE tbl_Data.FilterColumn IN (SELECT DATA FROM udf_Split(@FilterValues,','));

END

GO

希望对你有帮助

【讨论】:

  • 非常感谢 Louie...它成功了!..但我现在可以在我的下拉列表中看到多个“全选”选项......除此之外,它工作得非常好。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多