2010-11-09 123 views
2

我用这个代码从表1拷贝排表2,但它给了我TADOQuery.Open执行语句,但只有一次

命令文本不返回结果集

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:无法对已关闭的数据集执行此操作。

它复制我想要的,但只有一次。如何复制多次?谢谢。

回答

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]);