SSRS IIF参数等于NULL运行报告正常

时间:2014-09-09 14:12:25

标签: reporting-services ssrs-2008-r2

我正在SSRS中编写一份报告,该报告需要使用搜索参数来过滤报告。该参数设置为默认允许空值,这应该让报告正常运行。

报告运行,但是在我将某些内容添加到搜索参数中之前不会返回任何内容。

是否可以使用IIF表达式来表示如果参数为null,则将报告正常运行?

以下是我用于在SSRS中生成数据集的查询。

CREATE TABLE #StartDateTable(

  stSecurityType varchar(10) NOT NULL,
  stSecuritySymbol varchar(50) NOT NULL,
  stPrice float NOT NULL,
  stSecurityID int NOT NULL,
  stPriceDate date NOT NULL
)

INSERT INTO #StartDateTable (stSecurityType, stSecuritySymbol, stPrice, stSecurityID, stPriceDate )
    SELECT DISTINCT 
       Instruments.SecurityType, Instruments.SecuritySymbol, 
       InstrumentPrice.Price, InstrumentPrice.SecurityID, InstrumentPrice.PriceDate
    FROM 
       InstrumentPrice
    JOIN 
       Instruments ON Instruments.ID = InstrumentPrice.SecurityID
    WHERE 
       InstrumentPrice.PriceDate = @StartDate;

CREATE TABLE #EndDateTable
(
      etSecurityType varchar(10) NOT NULL,
      etSecuritySymbol varchar(50) NOT NULL,
      etPrice float NOT NULL,
      etSecurityID int NOT NULL,
      etPriceDate date NOT NULL
)

INSERT INTO #EndDateTable (etSecurityType, etSecuritySymbol, etPrice, etSecurityID, etPriceDate)
   SELECT DISTINCT 
      Instruments.SecurityType, Instruments.SecuritySymbol, 
      InstrumentPrice.Price, InstrumentPrice.SecurityID, 
      InstrumentPrice.PriceDate
   FROM 
      InstrumentPrice
   JOIN 
      Instruments ON Instruments.ID = InstrumentPrice.SecurityID
   WHERE 
      InstrumentPrice.PriceDate = @EndDate;

SELECT * 
FROM #StartDateTable
LEFT JOIN #EndDateTable ON #EndDateTable.etSecurityID = #StartDateTable.stSecurityID   

我使用LIKE将搜索参数设置为SSRS中数据集的过滤器,因为我希望它是通配符。

1 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点。在数据集中使用where子句或以下过滤使用组过滤器。

从组属性中使用和使用表达式..

示例=IIF(Isnothing(Parameters!Param1.Value) = true, 0, Parameters!Param1.Value)=IIF(Isnothing(Parameters!Param1.Value) = true, 999999, Parameters!Param1.Value)

enter image description here