Модель Query
FRONTIER-logo

СИСТЕМА ОПЕРАТИВНОГО И УПРАВЛЕНЧЕСКОГО УЧЕТА

data-warehouse 03
  • Автоматизация торговых и
  • производственных процессов
  • Планирование материальных
  • потребностей на базе MRP II и TOC
  • Бесплатная рабочая версия для
  • оценки пригодности Системы

Экземпляры моделей типа Query являются основными строительными блоками, на базе которых строится весь экранный интерфейс, связанный с отображением данных из внешнего источника и представлением их в различных стилях.

Модель Query является наиболее функциональным и самодостаточным объектом проектирования в системе Combo. Главное ее назначение - обеспечить динамическую генерацию соответствующей экранной формы на основании внутренней интерпретации собственных свойств и значений переданных параметров. В дополнение к этому, во время своей работы объект модели полностью автоматизирует процесс формирования SQL-команд на выборку и изменение данных в рабочей СУБД, а также обеспечивает развитый оконный интерфейс по работе с этими данными.

В качестве примера таких возможностей может служить табличное представление данных (Grid style), которое обладает не только мощными средствами по отображению, сортировке, фильтрации и настройке внешнего вида экранной таблицы, но также и встроенными средствами автоматического создания экранных  форм для добавления новых и редактирования существующих строк. При этом, для генерации таких форм используется одна и та же информация, введенная при описании соответствующей визуальной модели.

Создание модели Query выполняется по шаблону Сущность-Атрибут-Значение (EAV). Таким образом атрибуты сущности описываются не горизонтально, а вертикально - в структуре Атом-В-Запросе.

Для создания и редактирования экземпляров Query-моделей служит специальный редактор, который вызывается по команде Главного меню Проектирование>Запросы (Query). Структура описания такой модели является сложносоставной и содержит два основных раздела: 1) общие данные и 2) списка отображаемых атомов. В зависимости от заданного Стиля представления значения некоторых свойств модели могут не использоваться или принимать значения по умолчанию.

На следующем рисунки изображен пример окна определения общих свойств Query-модели с именем d_buyorder_spec (Спецификация заказа на поставку).

QueryModel

Свойства модели Query

Свойство Описание
Общие
Код (Code)

Код запроса - уникальное символьное обозначение модели не более 20 символов.

Стиль (Style)

Стиль (способ) отображения данных: GRID (сетка), FORM (форма), TABULAR (таблица), GRAPH (график).

Флаги (Options)

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

Сущность
(Entity)

Ссылка на объект-сущность. Одноименные свойства модели Query, определенные на уроне сущности, имеют более высокий приоритет

Бизнес объект
(Business Object)

Имя класса бизнес объекта, который будет автоматически создан и прикреплен к Query-модели при ее инициализации

Справка
(HelpTopic)

Ключевое слово или ИД темы справки. В последнем случае значение вводится в формате:  #<ID>. Файл справки в формате .CHM определяется в конфигурационном файле проекта

Timer interval

Интервал времени в секундах для вызова события timer()

Заголовок (Header)

Текст, отображаемый в строке заголовка окна-подложки. Может быть динамически вычислен, если текст введен в формате: &<Выражение>, где Выражение – любое корректное выражение, выполняющееся над текущей строкой запроса-родителя.

Иконка (MainIcon)

Главная иконка модели, автоматически отображаемая в левой части области подзаголовка

Параметры (Params)

Параметры модели в следующем формате:

<имя>:<тип> [=<значение_по_умолчанию>],

где тип может принимать одно из следующих значений: string, number, decimal, date, time, datetime, stringlist, numberlist, decimallist, datelist, timelist, datetimelist.

DISTINCT

Флаг, определяющий формирование оператора SELECT DISTINCT …

Источник
(MainTable)

Имя основной таблицы - обновляемой таблицы, над которой автоматически выполняются SQL – команды INSERT, UPDATE, DELETE (если не заданы соответствующие хранимые процедуры).

Алиас

(Alias)

Алиас (краткое имя, псевдоним) основной таблицы. По умолчанию совпадает с именем самой таблицы

Join Tables

Связанные таблицы, дополнительно участвующие в операторе FROM предложения SELECT. Формат описания таблиц:

<table1>[ <alias1>][|<table2>[ <alias2>]…[|<tableN>[<aliasN>]].

В качестве имени таблицы может быть указан объект сущности в формате: {имя_сущности}

Join Keys

Условные выражения для связи дополнительных таблиц с главной таблицей или между собой. Формат: <[alias.]column><operator><[alias.]column>

WHERE

Условное выражение, которое фильтрует строки в результирующем наборе данных. На имеющийся параметр запроса можно сослаться следующим образом:     :<имя_аргумента>

GROUP BY

Выражение для оператора GROUP BY

HAVING

Выражение для оператора HAVING

ORDER BY

Выражение для оператора ORDER BY

Хранимые процедуры
UPDATE (SP) SQL-процедура, автоматически выполняемая при сохранении измененных данных
INSERT (SP) SQL-процедура, автоматически выполняемая при сохранении новой записи
DELETE (SP) SQL-процедура, автоматически выполняемая при удалении какой-либо записи

 Правило проверки

Выражение

Выражение, результат которого должен возвращать логическое значение true/false. Вычисляется перед непосредственным сохранением текущей строки данных

Сообщение

Текстовая строка, которая выводится на экран в том случае, когда правило проверки вернуло результат false

График

Тип графика Тип графика, выбираемый из списка
Данные оси X Программные имена атомов, разделенные символом "," (запятая), формирующие ось категорий (ось X)
Надпись оси X Надпись для оси категорий
Данные оси Y Программные имена атомов, разделенные символом "," (запятая), формирующие ось значений (ось Y)
Надпись оси Y Надпись для оси значений
Серии (Ось Z) Разбивка данных оси категорий по сериям
Данные оси Z
Программные имена атомов, разделенные символом "," (запятая) и влияющие на создания серий данных
Надпись оси Z
Надпись для серий

График

bar-chart-2-32

Группа атрибутов График предназначена для описания характеристик представления текущих данных модели в виде графика указанного типа. Для модели типа GRAPH ввод таких атрибутов обязателен. Для моделей Query других типов графики создаются по отдельному запросу - вызовом команды Главного меню Функции>График. В этом случае, окно с изображением графика появляется в виде дополнительного дочернего окна, свойства которого можно изменять через его контекстное меню по щелчку правой клавиши мыши.

 

Команды SQL

add-database-32Как было описано выше, модель Query автоматически генерирует SQL-предложения для выборки и модификации данных на основе своего описания. Прежде всего, при инициализации модели формируется синтаксис команды SELECT, все элементы которой имеются в описании модели в неявном виде. Далее, в зависимости от текущего состояния строк в визуальном представлении модели (создана, изменена, удалена) и при условии выполнения команды Сохранить, автоматически формируется синтаксис SQL-команд INSERT, UPDATE, DELETE, которые в итоге отправляются базе данных для исполнения. Если базой данных поддерживаются хранимые процедуры (stored procedures), в качестве соответствующих SQL-команд могут быть вызваны  процедуры, указанные в группе свойств модели "Хранимые процедуры (SP)". Для описания таких процедур, кроме указания имени необходимо также произвести привязку аргументов функций к данным текущего представления. Ниже описана структура таблицы для описания такой привязки:

Свойство Описание
Пор. номер Порядковый номер аргумента
Аргумент Имя аргумента в хранимой процедуре
Тип значения Тип значения, указанного в следующем свойстве. Может принимать следующие значения: Column (программное имя колонки в модели), Expression (выражение, результат выполнения которого и передается), Unused (Значение не передается)
Значение Имя колонки или PowerScript-выражение
Источник New - новое (текущее) значение, Original - начальное значение
InOut Способ передачи значения: In/ Out/ InOut