#datetime #time #format #ssrs-2008 #reporting-services
#datetime #время #формат #ssrs-2008 #отчеты-службы
Вопрос:
Я хочу отобразить продолжительность времени в отчете SSRS, моим полем базы данных является время в SQL. Он преобразует промежуток времени в SSRS.
формат: 13:00 — 15:50
Как я могу это сделать?
Fields!StartTime.Value.ToString() " PM - "
Fields!EndTime.Value.ToString() " PM" is not working..
Ответ №1:
Вот один из возможных способов достижения этого с помощью Custom code
в SSRS. Следующий пример не вдается в подробности создания отчетов SSRS, но должен дать представление о том, как форматирование времени может быть достигнуто в SSRS.
Пошаговый процесс:
-
Создайте таблицу с именем
dbo.Timespans
, используя скрипт, предоставленный в разделе SQL Scripts. Заполните его некоторыми данными, как показано на скриншоте # 1. -
Создайте отчет SSRS и используйте таблицу
dbo.Timespans
в качестве источника данных. Смотрите скриншот # 2. -
Нажмите на
Report
меню и выберитеReport Properties
. ВыберитеCode
вкладку в левой части. -
Вставьте код, указанный в разделе Пользовательский код SSRS, в текстовое поле Пользовательский код. Нажмите OK. Этот код принимает
timeSpan
значение иformat
строку. Затем данные о времени будут отформатированы и возвращены в виде строки. Смотрите скриншот # 3. -
Щелкните правой кнопкой мыши по столбцу времени и выберите
Expression...
Вставить выражение=Code.FormatTimeSpan(Fields!StartTime.Value, "hh:mm tt") " - "
в
Code.FormatTimeSpan(Fields!EndTime.Value, "hh:mm tt")Set expression for: Value
текстовое поле. Смотрите скриншоты # 4 и #5. -
На скриншоте # 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:
Скриншот # 2:
Скриншот # 3:
Скриншот # 4:
Скриншот # 5:
Скриншот # 6: