0

У меня есть отчет SSRS, который принимает 2 дополнительные параметры текста, как показано ниже:Форматирование Параметры в SSRS Report

  • StartDate, Text, позволяют Null, формат ГГГГММДД
  • EndDate, текст, позволяют Null. Формат YYYYMMDD

Я пытаюсь форматировать текстовое поле заголовка, который будет отображаться в поле ниже:

Если параметры Null, то я хотел бы получить по умолчанию название месяца и год (как отчет будет получить данные по умолчанию к предыдущему месяцу)

Если параметры установлены, то я хочу, чтобы отформатировать их как дд MMMM YYYY (так 20141103 будет отформатирован как 03 November 2014

Вот код, который я пытаюсь использовать для Выражение в текстовом поле:

= IIF(IsNothing(Parameters!StartDate.Value), 
    " for " & MonthName(Month(DateAdd("m",-1,Today))) & " " & Year(DateAdd("m",-1,Today)), 
    "From " & 
    RIGHT(Parameters!StartDate.Value,2) + " " + 
    MonthName(Month(
      LEFT(Parameters!EndDate.Value,4) + "-" + 
      MID(Parameters!EndDate.Value,5,2) + "-" + 
      RIGHT(Parameters!EndDate.Value,2) 
     )) + " " 
    + LEFT(Parameters!StartDate.Value,4) + 
    " to " + 
    RIGHT(Parameters!EndDate.Value,2) + " " 
    + MonthName(Month(
      LEFT(Parameters!EndDate.Value,4) + "-" + 
      MID(Parameters!EndDate.Value,5,2) + "-" + 
      RIGHT(Parameters!EndDate.Value,2) 
     )) + " " + 
    LEFT(Parameters!EndDate.Value,4)) 

так, как вы можете видеть, если параметр является Null (с учетом отчета по умолчанию для запуска данных последних месяцев, когда по расписанию), то функция должна просто показать что-то вроде December 2014, но если они введены в YYYMMDD то мне нужно отформатировать их.

Я получаю ошибку ниже (в SSRS в Visual Studio 2013):

[rsRuntimeErrorInExpression] The Value expression 
for the textrun ‘Textbox15.Paragraphs[0].TextRuns[0]’ 
contains an error: Conversion from string "--" to type 'Date' is not valid. 

Я также попытался с помощью CDate вокруг

LEFT(Parameters!EndDate.Value,4) + "-" + 
MID(Parameters!EndDate.Value,5,2) + "-" + 
RIGHT(Parameters!EndDate.Value,2) 

(они должны выйти, как 2014-11-01, например) но опять же, не повезло

Итак, где я здесь не так, и как я могу отформатировать эти даты, если они введены?

ответ

1

Я хотел бы использовать выражение что-то вроде этого:

=Format(CDate(Left(20150131, 4) + "-" + Mid(20150131, 5, 2) + "-" + Right(20150131, 2)), "dd MMMM yyyy") 

Я считаю, что лучше использовать целые или дата параметры, а не параметры текста. Таким образом, вы можете преобразовать текст параметр даты на дату, прежде чем он появится в докладе, делая что-то вроде:

select cast('20150131' as date) 
+0

Можете ли вы сказать мне, 'IsNothing' правильный способ проверить для Null параметра? –

+0

Да, я бы проверял то же самое, если параметр равен null; однако, я уже упоминал об этом, я постараюсь использовать всю свою логику в SQL и использовать SSRS только для отображения. –

+0

хорошо это только для текстового поля в отчете, и это действительно убивает меня. –

Смежные вопросы