Частные случаи использования выражений
В данном руководстве перечислены решения общих задач , связанных с Выражениями.
Сгруппированные предложения в скобках
Используйте квадратные скобки, чтобы указать условие, при котором выражение должно возвращать результат.
Например, следующее выражение возвращает всех клиентов с датой счета 25.08.2006 и клиентов c суммой счета 100:
[Accounts][[Date] == #8/25/2006#] && [Accounts][[Amount] == 100]
В следующем примере, выражение возвращает всех Клиентов, у которых есть Счет с датой 25.08.2006 и суммой 100:
[Accounts][[Date] == #8/25/2006# && [Amount] == 100]
Расчет групповые сводки
Используйте оператор ^, чтобы указать выражение, которое вычисляет сводку группы.
Суммируйте значения полей EFC в группе:
[][[GroupFieldName] == [^.GroupFieldName]].Sum([EFC])
Укажите значение заголовка группы:
[][[CategoryID] == [^.CategoryID] and [ProductID] == [][[CategoryID] == [^.CategoryID]].Max([ProductID])].Max([ProductName])
Подсчитайте, сколько раз встречается значение:
Следующее выражение подсчитывает, сколько раз значение 12 встречается в источнике данных:
[][[FootSize]='12'].Count()
Следующее выражение подсчитывает количество записей с ненулевыми значениями:
[][[FootSize]!=0].Avg([FootSize])
Свойства элементов отчета
Элементы отчета отображаются в обозревателе отчетов конструктора отчетов. Вы можете получить доступ к этим элементам и их свойствам в выражении. В следующем примере показано, как задать для свойства BackColor метки значение свойства BackColor другой метки:
[ReportItems].[xrLabel2].[BackColor]
Замечание
- [ReportItems] это обычный список, предоставляющий доступ ко всем элементам отчета на одном уровне.
- Вы не можете использовать коллекцию ReportItems в выражении Вычисляемого поля.
Изображения
Когда вы указываете выражение для свойства Источник изображения элемента Картинка вы можете использовать идентификаторы изображений из коллекции ImageResources отчета.
IIf([MarchSales]>20, [Images.ArrowUp],[Images.ArrowDown])
Использование индексов строк/столбцов для ячеек кросс-таблицы
Используйте следующие переменные, чтобы изменить настройки внешнего вида ячейки кросс-таблицы:
Arguments.GroupColumnIndex
Возвращает индекс столбца ячейки в группе.iif([Arguments.GroupColumnIndex] % 2 == 1, Rgb(235, 241, 252), ?) /* Result: The specified color applies an odd-even color style to the Cross Tab's columns. */
Arguments.GroupRowIndex
Возвращает индекс строки ячейки в группе.iif([Arguments.GroupRowIndex] % 2 == 1, Rgb(235, 241, 252), ?) /* Result: The specified color applies an odd-even color style to cross tab rows. */
Использование переменных для выражений, связанных с событиями
DataSource.RowCount
Возвращает общее количество строк данных в источнике данных.[DataSource.RowCount] != 0 /* Result: When this expression is applied to a control's Visible property, the control is hidden if the data source contains no data. */
DataSource.CurrentRowIndex
Возвращает индекс текущей строки данных в источнике данных.Iif([DataSource.CurrentRowIndex] % 2 = 0, 'red', 'green') /* Result: When this expression is used for a table row's BackColor property, odd rows are colored in red, even rows are colored in green. */
Замечание
Эти переменные недействительны, если в отчете есть элемент Оглавление.
Укажите родительские отношения
Используйте оператор родительского отношения '^' для ссылки на родителя в выражениях, написанных в контексте дочернего элемента. Вы можете последовательно применять этот оператор для охвата многоуровневых родительских отношений.
Вы можете использовать этот оператор для ссылки на обрабатываемую в данный момент группу отчетов. Это позволяет вычислять агрегаты внутри групп, как показано в следующем выражении:
[][[^.CategoryID] == [CategoryID]].Sum([UnitPrice])
Проверка элементов коллекции
Используйте скобки, чтобы проверить, содержит ли коллекция элемент, удовлетворяющий условию. Следующее выражение возвращает значение true, если коллекция Accounts содержит хотя бы один элемент, удовлетворяющий условию [Amount] == 100:
[Accounts][[Amount] == 100]
Следующее выражение возвращает false, если коллекция Accounts пуста:
[Accounts][]
Обратитесь к следующему разделу за примером использования этого синтаксиса: Вычисление агрегатной функции.