Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИУС / Практика / Разработка HMI-приложений.pdf
Скачиваний:
270
Добавлен:
18.05.2015
Размер:
15.71 Mб
Скачать

11.3.4 Примеры выражений

РАБОТА С ДАТАМИ

Функции Today() возвращает текущую дату.

Эту функцию можно указать в текстовом поле для вывода даты формирования отчета или в качестве параметра фильтрации данных на основе текущей даты.

Функция DateAdd может оказаться полезной для вычисления диапазона дат на основе одного параметра.

Выражение вычисляет дату, которая отстоит на 6 месяцев вперед от даты, содержащейся в параметре StartDate:

=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)

Функции Year выводит год указанной даты.

Эту функцию можно использовать для группирования по датам или для вывода года в качестве метки для набора дат. Приведенное выражение возвращает год заданной группы дат заказов:

=Year(Fields!OrderDate.Value)

Для работы с датами можно также пользоваться функцией Month и другими (Функции даты и времени).

РАБОТА СО СТРОКАМИ

Выражение возвращает значения двух полей - каждое на отдельной строке в одном текстовом поле:

=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value

Функция Format позволяет отформатировать даты и числа в символьном виде.

Выражение отображает значения параметров StartDate и EndDate в длинном формате даты:

=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")

ВНИМАНИЕ!!!

Если значением текстового поля является дата или число, то для форматирования поля лучше назначить значение свойству Format, а не вызывать функцию Format.

Функции Right, Len и InStr полезны для извлечения вложенных строк.

Например, усечение строки вида ДОМЕН\имя_пользователя до имя_пользователя. Выражение возвращает часть параметра User, расположенную справа от символа обратной косой черты (\):

=Right(Parameters!User.Value, Len(Parameters!User.Value) -

InStr(Parameters!User.Value, "\"))

Следующее выражение вычисляет то же значение, что и предыдущее, при помощи элементов класса String среды .NET Framework (вместо функций языка Visual Basic for Applications):

=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1,

Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)

Функция Join сцепляет выбранные значения параметра MySelection в одну строку, которая может использоваться в качестве выражения для значения текстового поля в

Модуль отчетов 459

элементе отчета:

=Join(Parameters!MySelection.Value)

Функция Regex платформы .NET Framework System.Text.RegularExpressions полезна при изменении формата существующих строк.

Выражение изменяет формат десятизначного телефонного номера в поле Phone с формы 425-555-8080 на (425) 555-8080:

=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -

.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")

ПРЕОБРАЗОВАНИЯ ТИПОВ ДАННЫХ

Выражение отображает количество значений, выбранных для многозначного параметра MySelection:

=CStr(Parameters!MySelection.Count)

УСЛОВНЫЙ ВЫБОР

Функция Iif возвращает одно из двух значений, в зависимости от того, истинно ли указанное выражение.

Выражение вызывает функцию Iif, которая возвращает логическое значение True, если значение LineTotal превышает 100, в противном случае - False:

=Iif(Fields!LineTotal.Value > 100, True, False)

Выражение использует несколько функций Iif (так называемые «вложенные Iif»), возвращая в зависимости от значения PctComplete одно из трех значений:

=Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5,

"Amber", "Red"))

Выражение в зависимости от значения PctComplete возвращает одно из трех значений, но использует для этого функцию Switch, которая возвращает значение, связанное с первым выражением списка, результат которого равен True:

=Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")

Выражение проверяет значение поля ImportantDate и возвращает Red, если прошло больше недели, в противном случае - Blue:

=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")

Это выражение позволяет управлять свойством Color текстового поля в элементе отчета.

Выражение проверяет значение поля PhoneNumber и, если его значение Nothing, возвращает строку No Value вместо значения Nothing:

=IIF(Fields!PhoneNumber.Value Is Nothing,"No

Value",Fields!PhoneNumber.Value)

Это выражение позволяет управлять содержимым текстового поля в элементе отчета.

Выражение проверяет значение поля Department и возвращает либо имя вложенного отчета, либо Nothing:

=Iif(Fields!Department.Value = "Development", "EmployeeReport",

Nothing)

460 DataRate

Это выражение может использоваться для условной детализации вложенных отчетов

Выражение проверяет, содержится ли в поле значение Nothing:

=Iif(IsNothing(Fields!LargePhoto.Value),True,False)

Это выражение может использоваться для управления свойством Скрыть элемента

Рисунок.

РАБОТА С ДАННЫМИ

Выражение выводит сумму данных Order:

=Sum(Fields!LineTotal.Value, "Order")

Это выражение может быть полезно в колонтитулах табличной группы.

Выражение выводит номер строки, начиная с первой строки самой внешней области данных.

Ключевое слово Nothing указывает, что функция начнет нумерацию строк с первой строки самой внешней области данных:

=RowNumber(Nothing)

Чтобы начать нумерацию с вложенной области данных, укажите в выражении ее имя.

Параметры (Параметры отчета)

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

=User!UserID

Выражение задает время генерации снимка данных :

=Parameters!CreationTime.Value

Колонтитулы (Секции отчета)

Выражение отображает текущую дату. Выражение можно указать в текстовом поле в нижнем колонтитуле или в теле отчета. Дата представляется в формате короткой даты платформы .NET Framework:

=Format(Globals.ExecutionTime, "d")

Выражение, если его поместить в текстовое поле в нижнем колонтитуле отчета, выводит номер страницы и общее число страниц, содержащихся в отчете:

=Globals.PageNumber & " of " & Globals.TotalPages

Выражение, указанное для текстового поля в левой части верхнего колонтитула, выводит первое значение текстового поля LastName, содержащееся на данной странице:

=First(ReportItems("LastName").Value)

Выражение, указанное для текстового поля в правой части верхнего колонтитула, выводит последнее значение текстового поля LastName, содержащееся на данной странице:

=Last(ReportItems("LastName").Value)

Выражение, помещенное в верхний или нижний колонтитул, выводит в текстовом поле

Модуль отчетов 461