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 展开
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 展开
1个回答
展开全部
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;
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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询