Query.Last

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

Функция устанавливает текущую строку таблицы запроса на конец указанного уровня группировки, после чего можно начинать обход записей запроса с помощью функции Prev. Функция работает как для обычных, так и для линейных запросов. Внимание: индекс группировки, используемый в этой функции, противоположен индексам, записанным в столбец @LEVEL таблицы результата запроса (пример, для запроса с тремя группировками, индекс этой функции 1 соответствует значению столбца @LEVEL, равному 3)! С точки зрения позиции курсора обхода, действие функции идентично действию First. Изменение позиции текущей записи в таблице результата запроса при вызове функции можно показать на примере ниже:

//Картина исходных уровней таблицы для запроса в обычном режиме
Группировка 1
  Группировка 2
    Группировка 3
Группировка 1
  Группировка 2
    Группировка 3 <--- Положение курсора обхода до вызова функции
    Группировка 3
  Группировка 2
    Группировка 3
  Группировка 2
    Группировка 3
    Группировка 3
    Группировка 3
Группировка 1
...

//После вызова функции Last(2)
Группировка 1
  Группировка 2
    Группировка 3
Группировка 1
  Группировка 2 <--- Положение курсора обхода после вызова функции Last(2)
    Группировка 3
    Группировка 3
  Группировка 2
    Группировка 3
  Группировка 2
    Группировка 3
    Группировка 3
    Группировка 3
Группировка 1
...

//После вызова функции Last(1)
Группировка 1
  Группировка 2
    Группировка 3
Группировка 1 <--- Положение курсора обхода после вызова функции Last(1)
  Группировка 2
    Группировка 3
    Группировка 3
  Группировка 2
    Группировка 3
  Группировка 2
    Группировка 3
    Группировка 3
    Группировка 3
Группировка 1
...

Синтаксис

Query.First(<Индекс или наименование группировки запроса (INT,STRING)>=0):<Результат запроса имеет хотя бы одну запись на этом уровне (INT)>

Аргументы

  • <Индекс или наименование группировки запроса (INT,STRING)> - Аргумент задает наименование столбца группировки или индекс группировки. При указании нуля (по умолчанию), текущим уровнем будет нулевой (начальный) уровень.

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

Возвращает единицу, если в таблице результата запроса внутри указанной группировки есть по крайней мере одна запись, иначе, возвращает ноль.

Примеры

//Заполним переменные в таблице запроса на основании средних за период формирования отчета, когда
// в накопителе фигурирует только количество
З:=Query.Create();
З.Execute(ТЗ,0);
aTab:=З.ResultTable;
aTab.Select();
While aTab.Next() Do
  зЦ0:=ПолучитьЦену(aTab.зН,НачДата);
  зЦ1:=ПолучитьЦену(aTab.зН,КонДата);
  aTab.зСмРасход:=aTab.зКлРасход*(зЦ1+зЦ0)/2;
  aTab.зСмНачОст:=aTab.зКлНачОст*(зЦ1+зЦ0)/2;
  aTab.зСмКонОст:=aTab.зКлКонОст*(зЦ1+зЦ0)/2;
  aTab.зСмПриход:=aTab.зКлПриход*(зЦ1+зЦ0)/2;
EndDo;
//Выполним постобработку
З.Postprocess();
//Спозиционируем курсор для начала обхода
З.Last();

//Произведем обход таблицы 
While З.Prev(1) Do
  ...
EndDo;