Tsql SSRS 2008:如何基于另一个参数创建参数

Tsql SSRS 2008:如何基于另一个参数创建参数,tsql,stored-procedures,reporting-services,ssrs-2008,parameter-passing,Tsql,Stored Procedures,Reporting Services,Ssrs 2008,Parameter Passing,我知道其他人也问过类似的问题,但我尝试过他们的解决方案,但对我来说仍然不起作用 我有一个名为“Region”的参数,它使用“Region”数据集,还有一个名为“Office”的报表参数,它使用“Office”数据集 现在,我希望根据“区域”选择筛选“Office”值列表。以下是我到目前为止所做的。对于区域数据集,它返回“regions\u id”和“region\u description”。然后,对于“Region”报告参数,我选择了“Text”数据类型并允许空值。选择“文本”可能是错误的,因

我知道其他人也问过类似的问题,但我尝试过他们的解决方案,但对我来说仍然不起作用

我有一个名为“Region”的参数,它使用“Region”数据集,还有一个名为“Office”的报表参数,它使用“Office”数据集

现在,我希望根据“区域”选择筛选“Office”值列表。以下是我到目前为止所做的。对于区域数据集,它返回“regions\u id”和“region\u description”。然后,对于“Region”报告参数,我选择了“Text”数据类型并允许空值。选择“文本”可能是错误的,因为这是唯一标识符值。对于可用值,我选择了区域数据集和区域id作为值,区域描述作为标签。我转到“高级”选项卡并选择“始终刷新”。在默认选项卡上,我输入了“(Null)”,表示他们希望查看所有区域的时间

接下来,我创建了一个名为“regions_id2”的报告参数,允许空值,并设置available values=region dataset。对于值和标签,我指定了区域id。对于默认值,我再次输入“(Null)”。我再次选择了“总是刷新”

最后,我将这个“regions_id2”参数添加到“office”数据集中。然后,office报告参数使用具有可用值的“office”数据集。Value field=“group\u profile\u id”和label field=“name\u和\u license”。默认值=“(空)”。高级“始终刷新”

我按照相同的顺序排列了这些报告参数:Regions、Regions\u id2和Office。但是现在,当我运行此报告时,我没有收到任何错误,但是,无论我为区域选择什么,办公室列表都包括所有办公室。以下是我对这些数据集的T-SQL:

CREATE Procedure [dbo].[rpt_rd_Lookup_Regions]
(
    @IncludeAllOption bit = 0,

)

As
SET NOCOUNT ON

If @IncludeAllOption = 1
BEGIN
    Select Distinct
    NULL AS [regions_id],
    '-All-' AS [region_description]

    UNION ALL
    SELECT Distinct
        [regions_id],
        [region_description]
    FROM [evolv_cs].[dbo].[regions]
    Where [region_description] not in ('NA','N/A')
    Order By [region_description]
END
Else
BEGIN
    SELECT Distinct
        [regions_id],
        [region_description]
    FROM [evolv_cs].[dbo].[regions]
    Where [region_description] not in ('NA','N/A')
    Order By [region_description]
END

CREATE  Procedure [dbo].[rpt_rd_Lookup_Facilities]
(
    @IncludeAllOption bit = 0,
    @regions_id uniqueidentifier = NULL
)

As
SET NOCOUNT ON

If @IncludeAllOption = 1
BEGIN
    Select
        Null As [group_profile_id],
        Null As [profile_name],
        Null As [license_number],
        Null As [other_id],
        --Null As [Regions_id],
        '-All-' As [name_and_license]
    UNION ALL
    SELECT
        [group_profile_id],
        [profile_name],
        [license_number],
        [other_id],
        --[regions_id],
        [profile_name] + ' (' + LTRIM(RTRIM([license_number])) + ')' As [name_and_license]
    FROM [evolv_cs].[dbo].[facility_view] With (NoLock) 
    Where [is_active] = 1 and (@regions_id is NULL or @regions_id = [regions_id])
    Order By [profile_name]
END
Else
BEGIN
    SELECT
        [group_profile_id],
        [profile_name],
        [license_number],
        [other_id],
        [regions_id],
        [profile_name] + ' (' + LTRIM(RTRIM([license_number])) + ')' As [name_and_license]
    FROM [evolv_cs].[dbo].[facility_view] With (NoLock)
    Where [is_active] = 1 and (@regions_id is NULL or @regions_id = [regions_id])
    Order By [profile_name]
END

我可能做错了什么?

我通过从office数据集的region dataset中选择region参数值来修复这一问题

我通过从office数据集的region dataset中选择region参数值来修复这一问题

为什么需要参数@regions\u id2`?这似乎是多余的。您的参数是多值还是单值?这些参数是单值。我尝试在没有regions_id2的情况下执行此操作,但它给了我错误,说我无法使用regions中的字段值作为Office.o的参数。谢谢我的错误是没有从office数据集的region数据集中选择region参数值。为什么需要参数@regions_id2`?,这似乎是多余的。您的参数是多值还是单值?这些参数是单值。我尝试在没有regions_id2的情况下执行此操作,但它给了我错误,说我无法使用regions中的字段值作为Office.o的参数。谢谢我的错误是没有为office数据集从区域数据集中选择区域参数值。