Добавление колонок в запрос
Glossary Item Box
Колонка запроса Terrasoft.EntitySchemaQuery представляет собой экземпляр класса Terrasoft.EntityQueryColumn. В свойствах экземпляра колонки можно указать ее основные характеристики: заголовок, значение для отображения, различные признаки ее использования, порядок и позицию сортировки и т.д.
Для добавления колонок в запрос предназначен метод addColumn(), который возвращает экземпляр добавленной в запрос колонки. Имя колонки относительно корневой схемы в методах addColumn() формируется согласно правилам, описанным в статье "Построение путей к колонкам относительно корневой схемы". Данный метод имеет несколько разновидностей, что позволяет добавлять в запрос колонки с различными параметрами (табл. 1).
Табл. 1. — Методы добавления колонок в запрос
Метод | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
addColumn(column,[columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки Terrasoft.EntityQueryColumn.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addAggregationSchemaColumn(columnPath, aggregationType, [columnAlias], aggregationEvalType) |
Создает и добавляет в коллекцию колонок запроса экземпляр функциональной колонки Terrasoft.FunctionQueryColumn с заданным типом агрегации (Terrasoft.FunctionType.AGGREGATION).
Типы агрегации (Terrasoft.AggregationType)
Области применения агрегирующей функции (Terrasoft.AggregationEvalType)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addParameterColumn(paramValue, paramDataType, [columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки-параметра Terrasoft.ParameterQueryColumn.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addFunctionColumn(columnPath, functionType, [columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки-функции Terrasoft.FunctionQueryColumn.
Типы функций (Terrasoft.FunctionType)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addDatePartFunctionColumn(columnPath, datePartType, [columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки-функции Terrasoft.FunctionQueryColumn с типом [Часть даты] (Terrasoft.FunctionType.DATE_PART).
Часть даты (Terrasoft.DatePartType)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addMacrosColumn(macrosType, [columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки-функции Terrasoft.FunctionQueryColumn с типом [Макрос] (Terrasoft.FunctionType.MACROS), который не требует парметризации (например, текущий месяц, текущий пользователь, первичная колонка, и т.д.).
Типы макроса колонки (Terrasoft.QueryMacrosType)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addDatePeriodMacrosColumn(macrosType, [macrosValue], [columnAlias]) |
Создает и добавляет в коллекцию колонок запроса экземпляр колонки-функции Terrasoft.FunctionQueryColumn, с типом [Макрос] (Terrasoft.FunctionType.MACROS). Функция добавляет колонку с типом макрос, который требует парметризации. Например, следующие N дней, 3-й квартал года, и т.д.
|
Примеры добавления колонок в запрос
Пример 1. — Добавление в коллекцию колонок запроса колонки из корневой схемы
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addColumn("DurationInMinutes", "ActivityDuration");
Пример 2. — Добавление в коллекцию колонок запроса аггрегирующей колонки с типом аггрегации SUM, применяющимся ко всем записям таблицы
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addAggregationSchemaColumn("DurationInMinutes", Terrasoft.AggregationType.SUM, "ActivitiesDuration", Terrasoft.AggregationEvalType.ALL);
Пример 3. — Добавление в коллекцию колонок запроса аггрегирующей колонки с типом аггрегации COUNT, применяющимся к уникальным записям таблицы
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addAggregationSchemaColumn("DurationInMinutes", Terrasoft.AggregationType.COUNT, "UniqueActivitiesCount", Terrasoft.AggregationEvalType.DISTINCT);
Пример 4. — Добавление в коллекцию колонок запроса колонки-параметра с типом данных TEXT
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addParameterColumn("DurationInMinutes", Terrasoft.DataValueType.TEXT, "DurationColumnName");
Пример 5. — Добавление в коллекцию колонок запроса колонки-функции с типом функции LENGTH (размер значения в байтах)
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addFunctionColumn("Photo.Data", Terrasoft.FunctionType.LENGTH, "PhotoLength");
Пример 6. — Добавление в коллекцию колонок запроса колонки-функции с типом DATE_PART (часть даты). В качестве значения используется день недели
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addDatePartFunctionColumn("StartDate", Terrasoft.DatePartType.WEEK_DAY, "StartDay");
Пример 7. — Добавление в коллекцию колонок запроса колонки-функции с типом MACROS, который не требует парметризации — PRIMARY_DISPLAY_COLUMN (первичная колонка для отображения)
var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, { rootSchemaName: "Activity" }); esq.addMacrosColumn(Terrasoft.QueryMacrosType.PRIMARY_DISPLAY_COLUMN, "PrimaryDisplayColumnValue");