TADOQuery.Open只执行一次语句

时间:2010-11-09 23:04:41

标签: database delphi insert ado

我使用此代码将行从Table1复制到Table2,但它给了我

  

命令文本不返回结果集

 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 个答案:

答案 0 :(得分:8)

对于不打开游标的脚本(如insert,update或exec),请使用TADOQuery的ExecSQL方法。

它返回一个Integer,表示查询中受影响的行数。

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]);
相关问题