1 (edited by Alfil 2022-03-30 13:44:09)

Topic: Запись в БД группы строк Решено

Добрый день
Имеется "таблица БД А" с данными о предметах, "таблица базы данных B", в которой формируются комплекты с предметами из таблицы А и "таблица базы данных C", в которую нужно записать на человека все предметы, входящие в определенный комплект из "таблицы Б".
У таблицы в форме, с которой должна происходить запись в "таблицу C", установлен параметр goMultiSelect - True, но как его правильно использовать что б одновременно записать выбранные строки из этой таблицы я так и не понял - проходит только одна строка, при этом id "таблицы А" не подцепляется, соответственно данные из "таблицы А" не переносятся в таблицу - вместо них пустота.
Подскажите как это правильно сделать.
Дополнено:
Удалось выдернуть id и записать в таблицу скриптом с помощью переменной

var IDbook: string;
begin
   IDbook:= SQLExecute('SELECT id FROM KompList WHERE id='+Komlist.Book.sqlValue);
   SQLExecute('INSERT INTO Dolgi(id_Chitately, id_Book, KolVid, Ost) VALUES ("'+Komlist.ComChit.sqlValue+'","'+IDbook+'","'+Komlist.KVid.Text+'", "'+Komlist.Kost.Text+'")');
   Dolg.TableGrid1.dbUpdate;
end;

Как провести такой финт над всеми выбранными строками разом?

Post's attachments

Attachment icon Bib.jpg 486.96 kb, 80 downloads since 2022-03-29 

Re: Запись в БД группы строк Решено

Вам нужно пробежать в цикле по таблице с мультиселектом, и для каждой выделенной строки выполнить свою SQL-команду INSERT.

Визуальное программирование: блог и телеграм-канал.

3 (edited by Alfil 2022-03-30 13:43:51)

Re: Запись в БД группы строк Решено

k245 wrote:

Вам нужно пробежать в цикле по таблице с мультиселектом, и для каждой выделенной строки выполнить свою SQL-команду INSERT.

Сам я в Delphi ноль, с помощью гугла и форума состряпал вот такую конструкцию:

var
i,:integer;
begin
    for i:=0 to Komlist.Book.RowCount-1 do
       if  Komlist.Book.Row[i].Selected then
           SQLExecute('INSERT INTO Dolgi(id_Chitately, id_Book, KolVid, Ost, DVid, DVozv) VALUES ("'+Komlist.ComChit.sqlValue+'","'+Komlist.Book.sqlValue+'","'+Komlist.KVid.Text+'", "'+Komlist.Kost.Text+'", '+Komlist.DateVid.sqlDate+', '+Komlist.DateVozv.sqlDate+')');
       Dolg.TableGrid1.dbUpdate;
end;

Несколько записей содаются, то есть цикл работает, но эти записи одинаковы, то есть перебора строк не происходит.... Подскажите, пожалуйста, что тут нужно добавить для перебора.
И еще вопрос - есть ли возможность установить у таблицы свойство, что б по умолчанию были выбраны все строки?
Вопрос решен http://myvisualdatabase.com/forum/viewtopic.php?id=8059
Спасибо k245 и sibprogsistem!