Параметр даты и времени в SSRS

#reporting-services

#службы отчетов

Вопрос:

У меня есть отчет, который требует от пользователя ввести начальную дату, а также разрешить им выбирать из календаря. Мне было интересно, возможно ли ввести дату в виде строки. Прямо сейчас у меня есть текстовое поле с календарем, и я хотел бы, чтобы пользователь вводил дату [06302015] вместо [06/30/2015]

можем ли мы опустить тире и сохранить формат отчета по дате?

Комментарии:

1. Если вы хотите, чтобы конечный пользователь вводил текстовые значения.. ваш запрос должен будет принять значение этого параметра и изменить его на формат даты, чтобы параметр работал правильно.. Вы наверняка будете сравнивать / фильтровать столбец даты .. и потребуется отслеживание ошибок, поскольку пользователи могут вводить что угодно … лучше всего придерживаться календаря… вы можете просто ввести дату с косой чертой, и она будет работать, и вам не нужно использовать средство выбора даты.

2. Имейте в виду, что в виде строки ‘06302015’ > ‘05302018’ (не является намерением). Но в качестве даты ‘2018-05-30’ > ‘2015-05-03’…

Ответ №1:

Тип параметра можно изменить в свойствах параметра, как показано ниже. При этом календарь будет удален, и останется только текстовое поле.

введите описание изображения здесь

Комментарии:

1. итак, как это поможет OP фильтровать столбец даты и времени? Конечно.. это позволяет конечному пользователю вводить текст .. но фильтрация таблицы не будет работать как есть!

2. Я хотел бы, чтобы также отображался календарь, возможно ли также иметь средство выбора даты

3. Следует упомянуть, что если пользователь хочет указать дату в виде текста, то текстовую дату необходимо будет преобразовать в дату в коде. Возможно, было бы лучше оставить параметр current date и РАЗРЕШИТЬ значения NULL, затем добавить другой параметр для текстовой даты и проверять, имеет ли параметр Date значение NULL ( DECLARE @DATE_internal as DATE = ISNULL(@DATE, CAST(RIGHT(@TEXT_DATE, 4) '-' LEFT(@TEXT_DATE, 2) '-' SUBSTRING(@TEXT_DATE, 3, 2) AS DATE) )

Ответ №2:

  1. Измените тип параметра на «Текст».
  2. Добавьте второй «скрытый» параметр (как тип данных даты / времени), который принимает значение LAST_DATE_EDITED в качестве входных данных в значение по умолчанию для 2-го параметра, используя выражение: =DateValue(Mid(Parameters!LAST_DATE_EDITED.Value,1,2) amp; "/" amp; Mid(Parameters!LAST_DATE_EDITED.Value,3,2) amp; "/" amp; Mid(Parameters!LAST_DATE_EDITED.Value,5,4))
    (Не тестировалось, но оно должно быть близко)
  3. Затем используйте второй параметр в своем отчете вместо LAST_DATE_EDITED.

Если пользователь вводит неправильно отформатированную строку чисел, использует текст и т.д., SSRS выдаст исключение.

ИМО, это не самое элегантное решение, и оно требует пользовательского ввода, который подвержен ошибкам. Не то, что я бы реализовал (я бы попросил пользователей использовать встроенный инструмент выбора даты и времени и обучил их использовать допустимые разделители, такие как точки, косые черты или тире, или просто использовать элемент управления календарем).