【问题标题】:filter tablix without datasource values in ssrs在 ssrs 中过滤没有数据源值的 tablix
【发布时间】:2015-08-27 14:53:19
【问题描述】:

我有 SSRS 报告,我需要根据参数过滤我在报告中创建的静态表。此表没有数据源,我手动输入数据。 tablix 包含 3 列。 如何根据参数过滤列? 例如,我尝试了表达式 =@param1,但它不起作用。 现在我只设法过滤表达式是否在数据源字段上。

【问题讨论】:

    标签: visual-studio reporting-services ssrs-tablix


    【解决方案1】:

    您是否确实有一个表格,其中包含直接写入报告中的多个值?如果是这样,我认为您将无法像您所做的那样有效地对其执行任何过滤,它将数据写入显示的文本框。

    我想你最好的选择是创建一个新数据集并用你的静态数据填充它,例如

    SELECT 'A' AS Letter, 'English' AS Language
    UNION
    SELECT 'B' AS Letter, 'French' AS Language
    UNION
    SELECT 'A' AS Letter, 'German' AS Language
    

    给你一个表格如下

    Letter |  Language
    -------+----------
    A      |  English
    B      |  French
    A      |  German
    

    然后您可以过滤 Letter = A

    【讨论】:

      【解决方案2】:

      所以基本上你有一个 Tablix,它有 3 列预先填充了你手动输入到文本框中的信息?由于您已经输入了该数据,因此我认为没有办法在运行时对其进行过滤。该数据本质上是硬编码的。 SSRS 中的过滤器功能用作WHERE 子句,因此它限制了从查询中带入报告的内容。

      我将创建一个到虚拟数据库的数据源连接,创建一个 DataSet,然后创建一个查询来填充一个临时表,其中包含您手动输入的所有信息。创建临时表并将值插入其中后,您可以使用参数执行SELECT。您的 Tablix 将仅填充与参数匹配的信息。大意是这样的:

      CREATE TABLE #TempTable (
          ID INT
          ,Name VARCHAR(MAX)
          ,Email VARCHAR(MAX)
          )
      
      INSERT INTO #TempTable (
          ID
          ,Name
          ,Email
          )
      VALUES (
          1
          ,'Bob'
          ,'bob@email.com'
          )
          ,(
          2
          ,'Frank'
          ,'frank@email.com'
          )
          ,(
          3
          ,'Jim'
          ,'jim@email.com'
          )
      SELECT
          *
      FROM
          #TempTable
      WHERE
          ID = @ID
      DROP TABLE #TempTable
      

      【讨论】:

        猜你喜欢
        • 2017-08-07
        • 1970-01-01
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多