TADOQuery.Open выполняет оператор, но только один раз - PullRequest
2 голосов
/ 10 ноября 2010

Я использую этот код для копирования строки из Таблицы1 в Таблицу2, но он дает мне

Текст команды не возвращает набор результатов

 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('insert into Table1');
 ADOQuery1.SQL.Add('select Field1 ,Field2 from Table2');
 ADOQuery1.SQL.Add('where ArtNo= 1');
 ADOQuery1.Open;
 ADOQuery1.Refresh ;

Если яне используйте

 ADOQuery1.Open;

, это дает мне

ADOQuery1: Невозможно выполнить эту операцию для закрытого набора данных.

Копирует то, что я хочуно только один раз.Как копировать много раз?Спасибо.

1 Ответ

8 голосов
/ 10 ноября 2010

Для сценариев, которые не открывают курсор (например, вставка, обновление или exec), используйте метод ExecSQL из TADOQuery.

Возвращает целое число, представляющее количество затронутых строк по вашему запросу.

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into Table1');
ADOQuery1.SQL.Add('select Field1 ,Field2 from Table2');
ADOQuery1.SQL.Add('where ArtNo= 1');
NumRows := ADOQuery1.ExecSQL;
ShowMessageFmt('Affected rows on Table2: %d', [NumRows]);
...