Как отобразить значение времени в заданном формате строки в отчете SSRS? - PullRequest
6 голосов
/ 10 июня 2011

Я хочу отображать продолжительность времени в отчете SSRS Мое поле БД - это время в SQL. Преобразует Timespan в SSRS.

формат: 13:00 - 15:50

Как я могу это сделать?

Fields!StartTime.Value.ToString() + " PM - "  + 
       Fields!EndTime.Value.ToString() + " PM" is not working..

1 Ответ

16 голосов
/ 11 июня 2011

Вот один из возможных способов достижения этого с помощью Custom code в SSRS. В следующем примере не рассматриваются детали создания отчетов SSRS, но следует дать представление о том, как можно добиться форматирования времени в SSRS.

Пошаговый процесс:

  1. Создайте таблицу с именем dbo.Timespans, используя сценарий, указанный в SQL Scripts . Заполните его некоторыми данными, как показано на скриншоте # 1 .

  2. Создайте отчет SSRS и используйте таблицу dbo.Timespans в качестве источника данных. Смотрите скриншот # 2 .

  3. Нажмите на меню Report и выберите Report Properties. Выберите вкладку Code в левой части.

  4. Вставьте код, указанный в разделе Пользовательский код SSRS в текстовом поле Пользовательский код. Нажмите ОК. Этот код принимает значение timeSpan и строку format. Затем он отформатирует данные времени и вернет их в виде строки. Смотрите скриншот # 3 .

  5. Щелкните правой кнопкой мыши по столбцу времени и выберите Expression... Вставьте выражение =Code.FormatTimeSpan(Fields!StartTime.Value, "hh:mm tt") + " - " + Code.FormatTimeSpan(Fields!EndTime.Value, "hh:mm tt") в текстовое поле Set expression for: Value. Смотрите скриншоты # 4 и # 5 .

  6. Снимок экрана # 6 показывает выполнение отчета.

Надеюсь, это поможет.

Сценарии SQL:

CREATE TABLE [dbo].[Timespans](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [StartTime] [time](7) NULL,
    [EndTime] [time](7) NULL,
CONSTRAINT [PK_Timespans] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO

Код пользователя SSRS:

public function FormatTimeSpan(timeSpanValue as TimeSpan, format as string) as string
    Dim dateValue as DateTime
    dateValue = new DateTime(timeSpanValue.Ticks)
    return dateValue.ToString(format)
end function

Снимок экрана № 1:

1

Снимок экрана № 2:

2

Скриншот № 3:

3

Снимок экрана № 4:

4

Снимок экрана № 5:

5

Снимок экрана № 6:

6

...