Я знаю, что другие задавали подобные вопросы, но я пробовал их решения, и они все еще не работают для меня.
У меня есть один параметр с именем «Регион», который использует набор данных «регион», и другой параметр отчета, называемый «Офис», который использует набор данных «офис».
Теперь я хочу, чтобы список значений «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
Что я мог сделать не так?