Мельница данных  (29.03.2024)
Агрегат

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

  • any - первый попавшийся объект. Результат имеет тип ссылки на объект агрегируемого класса.
    Пример
    1any(TObject with Master = Self.Parent)  
    2//первый попавшийся объект, имеющий значение 
    3//свойства Master равным значению свойства 
    4//Parent текущего (контекстного) объекта.
    
  • count - количество объектов. Результат имеет целочисленный тип.
    Пример
    1count(TObject with Master = Self.Parent) 
    2//количество объектов, имеющих значение свойства 
    3//Master равным значению свойства Parent 
    4//текущего объекта.
    
  • sum - сумма значений свойства, поля или функции объектов. Результат имеет тип суммируемого поля, свойства или функции
    Пример
    1sum(TExam.Mark with Master = LStudent) //сумма 
    2//баллов студента по его испытаниям
    
  • max, min - соответственно максимальное и минимальное значений свойства, поля или функции объектов. Результат имеет тип агрегируемого поля, свойства или функции
    Пример
    1min(TObject.Created) // момент создания первого 
    2//объекта Системы.
    

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

  1. Контекстная переменная (для выражений условий отбора доменов)
  2. Имя элемента перечисления
  3. Имя класса. Если это имя агрегируемого класса, то дальнейшие разыменования относятся к агрегируемому объекту
  4. Имя поля
  5. Имя метода
  6. Имя свойства
  7. Локальная переменная
  8. Параметр