Добавление строки с суммированием в числовых колонках со строкой, у которой совпадает значение ключевой колонки.

int ires = ts_table(int TableDescr,"add_row_sum", int column1index/string column1name, bool/int/double/string column1value, ...  , int columnNindex/string columnNname, bool/int/double/string columnNvalue);


Здесь:

column1index или column1name - индекс (от 0) или название колонки, в которую нужно записать значение column1value;

Возвращает в ires -1 в случае ошибки, или индекс добавленной или найденной строки (индексы строк от 0 до n-1).

Добавленная или найденая запись становится текущей строкой в таблице.


Проще всего объяснить на актуальном примере.
Имеются объекты "Доска". В этих объектах есть поле "типоразмер" ("100х40","50х40" и т.п.), "единица измерения" ("пог.м","кв.м","куб.м") и "количество".
Мы хотим получить суммарную таблицу, где бы все объекты типа "Доска", в проекте просуммировались следующим образом:


Материал

Ед.изм

Кол-во

Доска 100х50

пог.м

1000

Доска 50х40

куб.м.

2000

Доска 50х20

кв.м.

1900


Для этого создаем таблицу с одной ключевой колонкой и колонками для обычных данных


ts_table(TableDescr1,"add_column",0,"string","имя объекта + типоразмер + ед.изм");
ts_table("TableDescr, "set_first_key",0);
ts_table(TableDescr1,"add_column", 1,"string","objectname");
ts_table(TableDescr1,"add_column", 2,"string","tiporazmer");
ts_table(TableDescr1,"add_column", 3,"string","edizm");
ts_table(TableDescr1,"add_column", 4,"double","kolvo");
ts_table(TableDescr1,"set_columns_to_add_sum", "kolvo");



Для добавления строки в таблицу просто используем следующую запись:


ts_table(TableDescr1,"add_row_sum",0,objectname+tiporazmer+edizm, 1,objectname, 2, tiporazmer, 3, edizm, 4, kolvo);


В результате в таблице все объекты с одинаковыми значением имя+типоразмер+ед.изм. сведутся в единые записи, а в колонке "количество" будет стоять сумма количеств.