需要用户在 Reporting Services 报表中插入值

Need users to insert values in a Reporting Services Report

我需要用户能够将值列表(全部用于一列)粘贴到报告服务报告中。

此列表随后将插入到临时 table 中,而临时 table 将加入我的查询。

我正在寻找的结果集是 NULL 的计数,以指示这些值(它们是 ID)在数据库中丢失了多少以及存在了多少。从那里,它还将返回可用 ID 的详细信息。

我可以完成第二部分,但我很难通过 Reporting Services 将列表(比如 50 行)输入临时 table。

最终用户无权访问 SQL,并且最好在粘贴到报告参数之前对它们的值进行少量调整(添加括号等)。

有什么想法吗?

您可以在报告中提供一个多值参数,该参数将获取所有 ID 的列表,并且用户将 select 根据他们的意愿。否则你可以提供一个纯文本框参数,他们将在其中键入所有 ID,并用逗号分隔。

稍后你可以用这个参数值调用一个过程,并在过程中做你想做的事。如果这对您有帮助,请告诉我。

  1. 创建一个带有两个参数的 table 值函数,一个 varchar(max) 字符串和一个分隔符。在函数中,将提供的分隔符上的字符串解析为行。

    create FUNCTION [dbo].[ufn_MakeTableFromLIst]
    (
    @LIST varchar(max), 
    @DELIMITER char(1)= ','
    )
    
    RETURNS @RETURN_TABLE TABLE (Param varchar(4000))
    
    AS 
    BEGIN
    
    Declare @POS int,
    @PIECE varchar(4000)
    
    Set @LIST = ltrim(rtrim(@LIST)) + @DELIMITER
    Set @POS = charindex(@DELIMITER, @LIST, 1)
    
    -- parse the string into a table
    if REPLACE(@LIST, @DELIMITER, '') <> ''
    begin
    
    WHILE @POS > 0
    begin
    
    SET @PIECE = LTRIM(RTRIM(LEFT(@LIST, @POS - 1)))
    IF @PIECE <> ''
        begin
    
        INSERT INTO @RETURN_TABLE (param) VALUES (CAST(@PIECE AS varchar(4000)))
    
        end
    
    SET @LIST = RIGHT(@LIST, LEN(@LIST) - @POS)
    SET @POS = CHARINDEX(@DELIMITER, @LIST, 1)
    
    END
    End
    RETURN
    
  2. 在您的报告中创建两个参数以接受分隔字符串和分隔符。然后,只要字符串中的定界符一致,客户就可以为您提供他们可用的格式。

  3. 进行左连接或右连接并计算空值。