delphi 中用adoquery做循环从一个表中读数字向另一个表中插入出错

代码如下:procedureTfrmadd.btnaddClick(Sender:TObject);beginwithADOQUery2dobeginClose;SQL.... 代码如下:procedure Tfrmadd.btnaddClick(Sender: TObject);
begin
with ADOQUery2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from addmedicine');
Open;
end;
while not Adoquery2.Eof do
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from medicine where number=:A ');
ADOQuery3.Parameters.ParamByName('A').Value:=ADOQuery2.FieldByName('Number').AsString;
if ADOQuery3.RecordCount<1 then
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('insert into medicine (number,name,unit,count,inprice,outprice,made_data,useless_data) values(:A,:B,:C,:D,:E,:F,:G,:H) ');
ADOQuery3.Parameters.ParamByName('A').Value:=ADOQuery2.FieldByName('Number').AsString;
ADOQuery3.Parameters.ParamByName('B').Value:=ADOQuery2.FieldByName('name').AsString;
ADOQuery3.Parameters.ParamByName('C').Value:=ADOQuery2.FieldByName('unit').AsString;
ADOQuery3.Parameters.ParamByName('D').Value:=ADOQuery2.FieldByName('count').AsString;
ADOQuery3.Parameters.ParamByName('E').Value:=ADOQuery2.FieldByName('inprice').AsString;
ADOQuery3.Parameters.ParamByName('F').Value:=ADOQuery2.FieldByName('outprice').AsString;
ADOQuery3.Parameters.ParamByName('G').Value:=ADOQuery2.FieldByName('made_data').AsString;
ADOQuery3.Parameters.ParamByName('H').Value:=ADOQuery2.FieldByName('useless_data').AsString;
ADOQuery3.ExecSQL;
end;
Adoquery3.Next;
end;
end;
它老是提示:ADOQuery3 cannot perform this operation on a closed dataset
展开
 我来答
yueyun889
2008-04-02 · TA获得超过725个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:769万
展开全部
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from medicine where number=:A ');
ADOQuery3.Parameters.ParamByName('A').Value:=ADOQuery2.FieldByName('Number').AsString;

1.你少了ADOQuery3.Open;
2.Adoquery3.Next; 这句表示什么?有问题吧?应该是Adoquery2.Next;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式