Difference between revisions of "Tab.CopyTo"

From SunFlurry wiki
Jump to: navigation, search
1>Admin
m (1 revision imported)
 
(No difference)

Latest revision as of 09:04, 7 August 2023

  CopyTo (Копирование ячеек)
Объект:Таблица
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Неверное имя столбца, невозможно превратить в число, строку
Визуальность:Нет

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

Синтаксис

Tab.CopyTo(<Объект в который происходит копирование>,<Индекс начальной строки (INT)>,<Количество строк для копирования (INT)>,<Наименования столбцов копирования через запятую (STRING)>,<Наименования столбцов для фильтрации (STRING)>,<Фильтр столбца 1>,<Фильтр столбца 2>...)

Аргументы

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

Примеры

//Создается и заполняется таблица значений
aTab:=Tab.Create("b1,b2,b3,b4");

aTab.AddLine("b1,b2,b3,b4",1,2,3,4);
aTab.AddLine("b1,b2,b3,b4",2,2,3,33);
aTab.AddLine("b1,b2,b3,b4",3,5,5,4);
aTab.AddLine("b1,b2,b3,b4",4,2,3,4);
aTab.AddLine("b1,b2,b3,b4",4,2,3,77);
aTab.AddLine("b1,b2,b3,b4",5,2,3,4);

aList:=List.Create();
bTab:=Tab.Create();

//В список копируются значения двух столбцов, список будет содержать 12 значений.
aTab.CopyTo(aList,1,aTab.Size(),"b1,b4");

//В таблицу копируются значения всех столбцов, строки которых имеют в столбце b2 число 2, и в столбце b3 число 3.
aTab.CopyTo(bTab,1,aTab.Size(),,"b2,b3",2,3);

For i:=1 To aList.Size() Do
  Message("Значение "+i+": "+aList.Get(i));
EndDo;

bTab.Select();
While bTab.Next() Do
  Message(""+bTab.b1+"; "+bTab.b2+"; "+bTab.b3+"; "+bTab.b4);
EndDo;

//Будет выведено последовательно:
//"Значение 1: 1"
//"Значение 2: 4"
//"Значение 3: 2"
//"Значение 4: 33"
//"Значение 5: 3"
//"Значение 6: 4"
//"Значение 7: 4"
//"Значение 8: 4"
//"Значение 9: 4"
//"Значение 10: 77"
//"Значение 11: 5"
//"Значение 12: 4"
//"1; 2; 3; 4"
//"2; 2; 3; 33"
//"4; 2; 3; 4"
//"4; 2; 3; 77"
//"5; 2; 3; 4"