SSRS 2008: как создать параметр на основе другого параметра - PullRequest
2 голосов
/ 22 сентября 2011

Я знаю, что другие задавали подобные вопросы, но я пробовал их решения, и они все еще не работают для меня.

У меня есть один параметр с именем «Регион», который использует набор данных «регион», и другой параметр отчета, называемый «Офис», который использует набор данных «офис».

Теперь я хочу, чтобы список значений «Office» был отфильтрован на основе выбора «Region». Вот что я сделал до сих пор. Для набора данных региона он возвращает «region_id» и «region_description». Затем для параметра отчета «Регион» я выбрал тип данных «Текст» и разрешил значения Null. Это может быть ошибкой при выборе «текста», поскольку это значение уникального идентификатора. Для доступных значений я выбрал набор данных региона и region_id для значения, region_description для метки. Я перешел на вкладку «Дополнительно» и выбрал «Всегда обновлять». И на вкладке «По умолчанию» я ввел «(Ноль)», когда они хотят видеть все регионы.

NExt, я создал параметр отчета под названием «region_id2», разрешил нулевые значения и установил доступные значения = набор данных региона. Для значений и метки обоих я указывал регионы регионов. Для значения по умолчанию я снова ввел «(Null)». И я снова выбрал «Всегда обновлять».

Наконец, я добавил этот параметр region_id2 в набор данных office. Затем параметр отчета office использует набор данных office с доступными значениями. Значение field = "group_profile_id" и метка field = "name_and_license". Значения по умолчанию = "(Null)". Продвинутый "Всегда обновляйся".

И я упорядочил эти параметры отчета в том же порядке: Регионы, region_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

Что я мог сделать не так?

1 Ответ

0 голосов
/ 22 сентября 2011

Я исправил это, выбрав значение параметра региона из набора данных региона для набора данных офиса

...