SSRS - 向参数查询添加静态null

Jax*_*eon 3 sql sql-server sql-server-2008 reporting-services ssrs-2008

我正在寻找一种方法来为一个参数添加一个值,该参数的可用值是从一个简单的查询中检索出来的.我今天刚刚开始搞乱SSRS,我希望我没有做错.

从报告项目执行以下过程(凌乱,我知道):

CREATE PROCEDURE RAW_TIME_VAR
        @EMPLID as varchar(6) = NULL
,       @EMPLNAME as varchar(80) = NULL
,       @CHARGENO as int = NULL
,       @TYPE as varchar(8) = NULL
,       @STARTDATE as date = NULL
,       @ENDDATE as date = NULL
AS
Select * from DBO.RAW_TIME
Where   ([EMPL ID] = @EMPLID OR @EMPLID IS NULL)
AND     ([EMPL NAME] = @EMPLNAME OR @EMPLNAME IS NULL)
AND     ([CHARGE NO] = @CHARGENO OR @CHARGENO IS NULL)
AND     ([CHARGE TYPE] = @TYPE OR @TYPE IS NULL)
AND     [CHARGE DATE] Between @STARTDATE AND @ENDDATE
Run Code Online (Sandbox Code Playgroud)

报告项目中有两个数据集(我正在使用VS2008商业智能开发工作室).一个是从上面的过程生成的(RAW_TIME_DATASET),另一个是来自同一视图的查询,用于填充员工ID和名称(NAMES):

SELECT DISTINCT [EMPL ID], [EMPL NAME]
FROM RAW_TIME
ORDER BY [EMPL ID]
Run Code Online (Sandbox Code Playgroud)

我希望能够@EMPLNAME使用NAMES数据集中的所有员工姓名填充参数,同时还可以通过NULL在参数组合框中选择值"全部" 来传递."全部"可以通过使用查询传递UNION,将其置于组合框中而不在视图中,但我无法将其传递给报表NULL.呃...我希望这是有道理的.

Die*_*ego 5

你走在正确的轨道上.

如果您检查report_data选项卡,您将看到一个参数文件夹.展开它,您应该看到初始查询中的所有参数.右键单击EMPLNAME参数,选择参数属性,转到可用值并执行以下配置:

在此输入图像描述

此外,在常规选项卡上,将参数标记为接受空值

现在,诀窍在于NAMES数据集.您必须选择所有名称,以及具有空值的行.有几种方法可以实现它,最简单的方法是在查询中添加以下内容:

union SELECT null as [EMPL ID], 'NULL' as [EMPL NAME]
Run Code Online (Sandbox Code Playgroud)

如果不这样做,报告将抱怨参数不能为空.

结果(为简单起见,我只添加了2个参数):

在此输入图像描述