Выберите All в качестве значения по умолчанию для параметра Multivalue

Я создаю отчет в Visual Studio 2008 с большим количеством многозначные параметры, и он отлично работает, но я хотел бы иметь параметр "(Выбрать все)" в качестве значения по умолчанию при открытии отчета.

Есть ли какое-то выражение или код SQL, который я могу использовать, чтобы это произошло? Или мне нужно выбирать «(Выбрать все)» каждый раз, в каждом параметре, каждый раз, когда я хочу запустить отчет?


person iljitj    schedule 24.03.2010    source источник


Ответы (7)


Попробуйте установить "значение по умолчанию" параметров, чтобы использовать тот же запрос, что и "доступные значения". По сути, он предоставляет каждое отдельное «доступное значение» как «значение по умолчанию», а опция «Выбрать все» автоматически проверяется.

person JC Ford    schedule 30.03.2010
comment
Благодаря тонну. Единственное, что нужно добавить; если запрос, который вы используете для доступных значений, возвращает какие-либо нулевые значения, вы не можете установить значение по умолчанию (выбрать все), вероятно, потому, что функция с несколькими значениями не допускает пустых значений. В любом случае большое спасибо за ответ. - person iljitj; 31.03.2010
comment
По-прежнему наблюдается ошибка в SSRS 2008 R2: каскадное раскрывающееся меню не проверяет все, если все значения родительского раскрывающегося списка проверяются после 2, 3 раундов проверки и снятия отметки. - person Usama Khalil; 21.01.2014
comment
@iljitj Значение NULL сжигало меня и ставило в тупик - спасибо за этот самородок! - person SqlRyan; 21.10.2016
comment
Я был уверен, что у меня нет нулевых значений, и почти продолжил свое исследование по этому вопросу, но перепроверил дважды, и, конечно же, иногда у меня были нулевые значения, в зависимости от предыдущего выбора параметров. Упоминая это здесь, надеясь, что это сэкономит следующему человеку несколько минут разочарования. Всегда пробуйте несколько разных комбинаций запроса, прежде чем делать предположения о согласованности результатов. Спасибо @iljitj. - person AlsoKnownAsJazz; 19.04.2019
comment
Отлично, @jcford. Спасибо! Просто хочу добавить, что некоторые, а не все, просто реализовать как значения по умолчанию, внедрив бизнес-правила в клон исходного набора данных, который возвращает только те значения, которые вы хотите выбрать. например Если полный список возможностей содержит A, B и C, а набор данных называется AvailOptions, вы можете добавить логический столбец с именем [Default], а затем иметь второй набор данных с именем AvailOptionsJustDefault, в котором предложение Where имеет значение Default = 1. - person John Joseph; 09.01.2020

Использование набора данных со значениями по умолчанию — это один из способов, но вы должны использовать запрос для доступных значений и для значений по умолчанию, если значения жестко запрограммированы на вкладке «Доступные значения», тогда вы должны определить значения по умолчанию в виде выражений. Картинки должны все объяснять

Создать параметр (если он не создан автоматически)

Создать параметр

Определить значения - неправильный пример

Определение значений - неправильный путь

Определить значения - пример правильного способа

Определите значения - правильно

Установить значения по умолчанию — вы должны определить все значения по умолчанию, отражающие доступные значения, чтобы сделать «Выбрать все» по умолчанию, если вы не зададите все, по умолчанию будут выбраны только те, которые определены.

Установить значения по умолчанию

Результат

Результат

Одна картинка для типа данных: Int

Одно изображение для типа данных Int

person Pawel Cioch    schedule 21.01.2015
comment
Изображения уменьшились в размере, извините, надеюсь, вы сможете прочитать комментарии к ним. - person Pawel Cioch; 22.01.2015
comment
Вы упоминаете, тогда вы должны определить значения по умолчанию как выражения, но не объясняете, почему это нужно делать. Мне вот интересно, зачем это нужно? - person iamdave; 09.10.2018
comment
Тогда это было самопознанием. На самом деле не знаю, но я подозреваю, что выражения (в данном случае) являются программными значениями, поэтому движок знает, какого они типа. Если вы вводите только значение, оно не знает, является ли оно строкой или целым числом, и не может выполнять множественный выбор. Но кроме этого я не знаю причины, я просто знаю, что это так работает. Не стесняйтесь исследовать :) - person Pawel Cioch; 10.10.2018
comment
Движок знает, какой это тип данных, по вашему выбору в опции Data Type: на экране свойств General. Параметр может содержать только значения этого типа данных независимо от того, что вы вводите в виде выражения. - person iamdave; 11.10.2018
comment
Я пытался сделать наилучшее предположение. Если что-то подобное, не стесняйтесь звонить в Microsoft, у них есть ошибки везде, мне даже пришлось исправить механизм отчетов, чтобы он правильно отображался в Chrome. Это кучка хромых людей, использующих IE, с ними все возможно - person Pawel Cioch; 12.10.2018

Не работает, если у вас есть нули.

Вы можете обойти это, изменив оператор select так, чтобы он помещал что-то в нули:

phonenumber = CASE
  WHEN (isnull(phonenumber, '')='') THEN '(blank)'
  ELSE phonenumber
END
person E_8    schedule 30.06.2010
comment
этот символ что-то означает или ты грустишь? - person CodeMinion; 27.06.2011
comment
ssrs всегда заставляет меня выводить грустное лицо - person Tim Abell; 20.03.2015

Принятый ответ правильный, но неполный. Чтобы Select All был параметром по умолчанию, набор данных «Доступные значения» должен содержать как минимум 2 столбца: значение и метку. Они могут возвращать одни и те же данные, но их имена должны быть разными. Затем набор данных «Значения по умолчанию» будет использовать столбец значений, а затем Select All будет значением по умолчанию. Если набор данных возвращает только 1 столбец, в раскрывающемся списке параметра будет выбрано значение только последней записи.

person ajeh    schedule 30.07.2014

Добавление к ответу из E_8.
Это не работает, если у вас есть пустые строки.

Вы можете обойти это, изменив оператор select в SQL или изменив запрос в наборе данных SSRS.

 Select distinct phonenumber
from YourTable
where phonenumber <> ''
Order by Phonenumber
person BIReportGuy    schedule 09.12.2015

Это работает лучше

CREATE TABLE [dbo].[T_Status](
   [Status] [nvarchar](20) NULL
) ON [PRIMARY]

GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'Active')
GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'notActive')
GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'Active')
GO

DECLARE @GetStatus nvarchar(20) = null
--DECLARE @GetStatus nvarchar(20) = 'Active'
SELECT [Status]
FROM [T_Status]
WHERE  [Status] = CASE WHEN (isnull(@GetStatus, '')='') THEN [Status]
ELSE @GetStatus END
person galgil    schedule 22.12.2015

Этого довольно легко добиться, создав набор данных с помощью текстового запроса, подобного этому:

SELECT 'Item1'
UNION
SELECT 'Item2'
UNION
SELECT 'Item3'
UNION
SELECT 'Item4'
UNION
SELECT 'ItemN'

Запрос должен возвращать все элементы, которые можно выбрать.

person Stefan    schedule 19.11.2010