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

ВНИМАНИЕ!!!

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

11.3.3Применение глобальных коллекций в выражениях

ВDataRate из выражений можно ссылаться на следующие глобальные коллекции:

DataSources

DataSets

Fields

Globals

ReportItems

User.

КАК ОБРАТИЬСЯ К КОЛЛЕКЦИИ ИЗ ВЫРАЖЕНИЯ

Чтобы обратиться к коллекции из выражения, необходимо использовать стандартный синтаксис языка Visual Basic для элемента коллекции.

Ниже приведены примеры синтаксиса обращения к элементам коллекции:

Collection!ObjectName.Property или Collection!ObjectName("Property")

=Fields!Sales.Value

=Fields!Sales("Value")

Collection("ObjectName").Property

=Fields("Sales").Value

Collection("Member")

=User("Language")

Collection.Member

=User.Language

СВОДКА ПО ГЛОБАЛЬНЫМ КОЛЛЕКЦИЯМ

В следующей таблице описаны все глобальные коллекции и указано, можно ли к коллекции обращаться из выражения.

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

Глобальная коллекция

Пример

Описание

 

 

 

Fields

=Fields!Sales.Value

Представляет коллекцию полей

 

 

набора данных, доступных для

 

 

отчета. Доступна после получения

 

 

данных из источника данных в

 

 

набор данных.

ReportItems

=ReportItems("Textbox1").Va

Представляет коллекцию

 

lue

текстовых полей для элемента

 

 

отчета, например для текстовых

 

 

полей, содержащихся в области

 

 

данных таблицы, ее верхнем или

 

 

нижнем колонтитуле. Доступна во

 

 

время обработки отчета.

Globals

=Globals!ExecutionTime

Представляет глобальные

 

 

переменные, полезные для

 

 

отчетов, например для время

 

 

генерации отчета или номера

 

 

страницы. Доступна всегда.

User

=User.UserID или

Представляет коллекцию сведений

 

User.Language

о пользователе, выполняющем

 

 

отчет, например языковые

 

 

настройки или идентификатор

 

 

пользователя. Доступна всегда.

 

 

Параметр User!UserID часто

 

 

используется для фильтрования

 

 

результатов в отчетах.

Элементы коллекций Globals и Users возвращают тип variant.

Если нужно использовать глобальную переменную в выражении, требующем определенный тип данных, необходимо сначала привести переменную.

Например, чтобы преобразовать тип данных времени выполнения variant в формат Date

следует использовать преобразование: CDate(Globals!ExecutionTime).

Дополнительные примеры приведены в разделе Примеры выражений.

Fields

В каждом наборе данных отчета содержится одна коллекция Fields. Это коллекция полей, которые отображаются, когда в окне Источники данных разворачивается поле данных.

Коллекция Fields обычно используется для отображения данных в текстовых полях отчета, но может также использоваться и для других элементов, свойств и функций отчета. Имена полей должны быть уникальными в пределах коллекции, но одно и то же имя поля может существовать в нескольких коллекциях.

Во время обработки отчета, по мере обработки по очереди каждого элемента отчета, коллекция Fields, связанная с текущим элементом отчета, привязывается к базовым исходным данным. Данные, возвращаемые при обработке отчета, для конкретного поля могут иметь одно значение или значение для каждой строки в наборе данных. Тип полученных данных — с одним значением или с несколькими — определяется типом элемента отчета, который содержит ссылку на поле. Для ссылок из области данных (таблица или диаграмма) возвращается значение для каждой строки в наборе данных. Для ссылок, которые не являются частью области данных, возвращается одиночное значение.

Для обработки коллекции поля в наборе данных с помощью статистической функции отчета включите параметр scope, который определяет набор данных. Чтобы проверить взаимосвязи элементов отчета с набором данных, выберите элемент отчета и просмотрите его свойства.

456 DataRate

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

Свойства

По умолчанию элементы в коллекции Fields имеют два свойства: Value и IsMissing. При перетаскивании поля из окна Источники данных на элемент в шаблоне отчета, содержимому элемента отчета по умолчанию присваивается свойство поля Value. Для области данных значению каждой строки в наборе данных присваивается значение =Fields!FieldName.Value. Содержимому элемента отчета, который не является частью области данных, присваивается одиночное значение, например

=First(Fields!FieldName.Value).

Свойство IsMissing указывает, содержится ли поле, определенное для набора данных, в полях, полученных из источника данных. Поле может быть проверено в выражении поля с помощью языка Visual Basic. Свойство Value для отсутствующих полей имеет значение Nothing.

Для проверки отсутствия поля можно использовать выражение:

=IIF(Fields!FieldName.IsMissing, "Field was not returned by query",

Fields!FieldName.Value))

Поскольку функция IIF языка Visual Basic вычисляет все элементы инструкции перед возвратом результата, обращение к отсутствующему полю может вызвать ошибку.

В следующем примере показано, как можно выполнить вызов функции языка Visual Basic, обращающейся к полю, которое может отсутствовать:

=IIF(Sum(Fields!FieldName.Value) IS NOTHING, 0, Sum(Fields!FieldName.Value))

Globals

Коллекция Globals содержит глобальные переменные отчета.

Следующая таблица описывает элементы коллекции Globals.

Элемент

Тип

Описание

 

 

 

ExecutionTime

DateTime

Дата и время, когда началось выполнение отчета.

 

 

 

PageNumber

Integer

Номер текущей страницы. Может использоваться

 

 

только в верхних и нижних колонтитулах страницы.

ReportFolder

String

Полный путь к папке, содержащей отчет. Не включает

 

 

в себя URL-адрес сервера отчетов.

TotalPages

Integer

Общее количество страниц в отчете. Может

 

 

использоваться только в верхних и нижних

 

 

колонтитулах страницы.

Примеры использования коллекции Globals:

Это выражение, помещенное в текстовое поле нижнего колонтитула отчета, отображает номер страницы и общее количество страниц в отчете

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

Это выражение отображает текущую дату и время.

Время представляется в формате короткой даты платформы Microsoft .NET

Framework

=Globals.ExecutionTime

Если добавить форматирование "d", то будет отображаться только дата:

=Format(Globals.ExecutionTime, "d")

ReportItems

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

Коллекция ReportItems содержит текстовые поля в отчете. Элементы коллекции ReportItems имеют только одно свойство: Value.

Значение элемента ReportItems может использоваться для отображения или вычисления данных из другого поля в отчете. Чтобы получить доступ к значению текущего текстового поля, можно использовать глобальную переменную Me.Value или просто Value, встроенную в язык Visual Basic. Однако в функциях отчета, таких как

First и все статистические функции, используйте полный синтаксис.

Примеры использования коллекции ReportItems:

это выражение, помещенное в текстовое поле, отображает значение текстового поля с именем Textbox1

=ReportItems("Textbox1").Value

это выражение, помещенное в свойство Color текстового поля ReportItem, отображает текст черным цветом, если значение > 0, в ином случае — красным:

=IIf(Me.Value > 0,"Black","Red")

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

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

User

Коллекция User содержит данные о пользователе, выполняющем отчет.

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

Пример использования коллекции User:

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

=" for " & User!UserID

Следующая таблица описывает элементы коллекции User.

Элемент

Тип

Описание

Language

String

Язык пользователя, выполняющего отчет.

 

 

Например, en-US.

UserID

String

Идентификатор пользователя, выполняющего

 

 

отчет. Если используется проверка подлинности

 

 

Windows, это значение является учетной записью

 

 

домена текущего пользователя. Значение

 

 

определяется модулем безопасности служб

 

 

Reporting Services, который может использовать

 

 

проверку подлинности Windows или нестандартную

 

 

проверку подлинности.

458 DataRate