Query.Execute

From SunFlurry wiki
Jump to: navigation, search
  Execute (Выполнение запроса)
Объект:Запрос базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Невозможно превратить в строку, число, неверные параметры, ошибка запроса
Визуальность:Нет

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

Синтаксис

Query.Execute(<Текст запроса (STRING)>,<Режим запроса (INT)>=1,<Выполнять агрегацию столбцов (INT)>=1,<Столбцы с объектами, загружаемыми в режиме заголовка (STRING)>=""):<Таблица результата запроса (TAB)>

Аргументы

  • <Текст запроса (STRING)> - Аргумент задает текст запроса для выполнения.
  • <Режим запроса (INT)> - (необязательный аргумент) Задает режим выполнения запроса, возможны следующие значения:
    • 0 -- Не выполнять постобработку. Выполнение запроса останавливается после окончания первого этапа (см. Объект запрос базы данных), продолжить выполнение, если это необходимо, можно вызвав функцию Postprocess.
    • 1 (по умолчанию) -- Выполнить постобработку в режиме обычного запроса.
    • 2 -- Выполнить постобработку в линейном режиме
  • <Выполнять агрегацию столбцов (INT)> - (необязательный аргумент) Запрещает (0) или разрешает (1, по умолчанию) подсчет агрегации столбцов для обычного режима запроса в момент выполнения второго этапа запроса.
  • <Столбцы с объектами, загружаемыми в режиме заголовка (STRING)> - (необязательный аргумент) Аргумент задает наименования столбцов через запятую, для которых загрузка объектов перед сортировкой объектов будет проходить в режиме только заголовков (экономия памяти), для всех объектов столбцов, которые не перечислены в данном аргументе, будет происходить полная загрузка. Режим загрузки объектов перед началом сортировки, во время выполнения второго этапа запроса, можно отменить, если во втором аргументе функции указан режим 0, либо с помощью опции постобработки DoNotMassLoadBeforeAggregation.

Возвращаемое значение

Возвращает таблицу значений -- результат выполнения запроса.

Примеры

Var З Export;

  //Функция обхода группировок на основе рекурсии
  Function ОбходГруппировок(Уровень)
    If Уровень>З.GroupCount Then
      Exit;
    EndIf;
    
    While З.Next(Уровень) Do
      //Получить значение текущей группировки
      зЭл:=З.Get(З.Groups(Уровень));

      //Получить сальдо агрегации для текущей строки
      зНачОст:=З.зНачОст;
      зКонОст:=З.зКонОст;
      зПриход:=З.зПриход;
      зРасход:=З.зРасход;

      //Вывод информации в печатную форму отчета
      ...

      //Перейти к следующей группировке
      ОбходГруппировок(Уровень+1);
    EndDo;
  EndFunction

//Выполним запрос с произвольным количеством группировок
ТЗ:=...

З:=Query.Create();
З.Execute(ТЗ);

//Вывести заголовок в печатную форму отчета
...

//Вывод строк группировок
ОбходГруппировок(1);

//Вывод строки итого, работает как линейных, так и для обычных запросов
зНачОст:=З.BegTotals("зНачОст");
зКонОст:=З.EndTotals("зКонОст");
зПриход:=З.Compute("зПриход");
зРасход:=З.Compute("зРасход");

...