TempDB.Upload

From SunFlurry wiki
Revision as of 08:54, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  Upload, CopyFrom (Загрузка строк во временную таблицу)
Объект:Временная таблица базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Невозможно превратить в строку, неверные наименования столбцов, неверные аргументы, ошибка сервера
Визуальность:Нет

Функция добавляет в текущую временную таблицу базы данных информацию из таблицы значений или списка значений. При использовании списка, значения добавляются в указанный во втором аргументе столбец таблицы, при использовании таблицы значений, указанные во втором аргументе наименования столбцов таблицы должны соответствовать наименованиям столбцов временной таблицы базы данных, если второй аргумент опущен или является пустой строкой, система подберет в таблице все столбцы, наименования которых соответствуют наименованиям столбцов временной таблицы. Для случая загрузки из таблицы также можно задать фильтр по столбцам, заданным в третьем аргументе и их значениям, заданным последующими аргументами, только строки таблицы, соответствующие фильтру, будут добавлены во временную таблицу БД.


Синтаксис

TempDB.Upload(<Источник данных (TAB,LIST)>,<Наименования столбцов для загрузки (STRING)>,<Наименования столбцов для фильтрации (STRING)>,<Фильтр столбца 1>,<Фильтр столбца 2>...)

Аргументы

  • <Источник данных (TAB,LIST)> - Аргумент задает источник, данные из которого будут добавлены в строки временной таблицы БД. Источник также определяет тип последующих аргументов. Поддерживаются следующие источники: список значений, таблица значений.
  • <Наименования столбцов для загрузки (STRING)> - (необязательный аргумент) в зависимости от типа первого аргумента, данный может принимать следующие значения:
    • первый аргумент является списком значений: текущий аргумент содержит наименование столбца временной таблицы БД, в который будут помещены значения списка, для каждого значения списка будет добавлена одна строка временной таблицы.
    • первый аргумент является таблицей значений: текущий аргумент содержит наименование столбцов таблицы для выгрузки через запятую (можно также указать числа -- индексы столбцов), указанные наименования должны присутствовать во временной таблице. Если аргумент опущен, система подберет в таблице все столбцы, наименования которых соответствуют наименованиям столбцов временной таблицы.
  • <Наименования столбцов для фильтрации (STRING)> - (необязательный аргумент) Аргумент присутствует только, если источником данных является таблица значений и перечисляет наименования столбцов фильтра через запятую. Количество таких столбцов должно соответствовать количеству аргументов-фильтров, заданных после этого аргумента. Для каждой из копируемых строк таблицы, значения находящиеся в столбцах фильтра сравниваются со значениями аргументов-фильтров, и строки, где значения всех столбцов фильтра равны, используются для копирования.
  • <Фильтр столбца ?> - (необязательный аргумент) Аргументы присутствуют только, если источником данных является таблица значений. Аргументы задают произвольные значения фильтров столбцов. Количество таких аргументов должно совпадать с количеством столбцов-фильтров в предыдущем аргументе. Строка будет участвовать в копировании, если все значения фильтров совпадают с значениями соответствующих столбцов этой строки.

Примеры

//Показан код примера, приведенного в описании функции
aTab:=Tab.Create("Sort,GroupID,Value");
aTab.AddLine("Sort,GroupID,Value",11,1,5);
aTab.AddLine("Sort,GroupID,Value",22,0,33);
aTab.AddLine("Sort,GroupID,Value",33,0,77);
aTab.AddLine("Sort,GroupID,Value",34,0,534);
aTab.AddLine("Sort,GroupID,Value",35,2,17);
aTab.AddLine("Sort,GroupID,Value",37,0,0);
aTab.AddLine("Sort,GroupID,Value",80,0,1);
aTab.AddLine("Sort,GroupID,Value",81,0,-10);

//Создание и загрузка таблицы
aTemp:=TempDB.Create("Sort:INT,GroupID:INT,Value:INT");
aTemp.Upload(aTab,"Sort,GroupID,Value");

//Преобразование значений столбца Value
aTemp.UpdateFromGroups("GroupID<>0","Sort+","Value");

Message("Sort; GroupID; Value");
aTemp.Select();
While aTemp.Next() Do
  Message(""+aTemp.Sort+"; "+aTemp.GroupID+"; "+aTemp.Value);
EndDo;