实现功能:将用adoquery查询出来的数据,五个一组添加到另外一个表中??
adoquery2.First;
   i := 0; while not adoquery2.Eof do
   begin
    while not i=5 do
    begin
     adoquery3.Close;
     adoquery3.SQL.Clear;
     adoquery3.SQL.Add('insert into printtable(名称,型号,数量,单位,单价,金额)'+
       'values(:a1,:a2,:a3,:a4,:a5,:a6)');
     adoquery3.Parameters.ParamByName('a1').Value:=adoquery2.FieldByName('mc').Value;
     adoquery3.Parameters.ParamByName('a2').Value:=adoquery2.FieldByName('xh').Value;
     adoquery3.Parameters.ParamByName('a3').Value:=adoquery2.FieldByName('rksl').Value;
     adoquery3.Parameters.ParamByName('a4').Value:=adoquery2.FieldByName('dw').Value;
     adoquery3.Parameters.ParamByName('a5').Value:=adoquery2.FieldByName('dj').Value;
     adoquery3.Parameters.ParamByName('a6').Value:=adoquery2.FieldByName('je').Value;
     adoquery3.ExecSQL;
     adoquery2.Next;
     Inc(i);
    end;这样写不对 我应该如何写呢??

解决方案 »

  1.   

    不是的 这只是其中一个环节,我从表中取出五个数据一组,插入到另外一个表中,然后报表从这个表中取出这个数据。
     总表----取五个数据插入到printtable表中-----fastreport从printtable中取出-----清空printtable表------再从总表中取出-----循环
      

  2.   

    adoquery3.ExecSQL; 
    adoquery2.Next; 
    Inc(i); 
    这3句,好像有些问题。
      

  3.   

    应该有更简单的办法的,如果非要如此,可以这样做:    adoquery3.Close; 
        adoquery3.SQL.Clear; 
        adoquery3.SQL.Add('insert into printtable(名称,型号,数量,单位,单价,金额)'+ 
          'values(:a1,:a2,:a3,:a4,:a5,:a6)'); 
    if not adoquery2.Eof then            //否则就是直接循环到底了,与所有记录一次性插入没啥区别
    begin 
        while (i<5) and (not adoQuery2.eof) do 
        begin 
          adoquery3.Close; 
          adoquery3.Parameters.ParamByName('a1').Value:=adoquery2.FieldByName('mc').Value; 
          adoquery3.Parameters.ParamByName('a2').Value:=adoquery2.FieldByName('xh').Value; 
          adoquery3.Parameters.ParamByName('a3').Value:=adoquery2.FieldByName('rksl').Value; 
          adoquery3.Parameters.ParamByName('a4').Value:=adoquery2.FieldByName('dw').Value; 
          adoquery3.Parameters.ParamByName('a5').Value:=adoquery2.FieldByName('dj').Value; 
          adoquery3.Parameters.ParamByName('a6').Value:=adoquery2.FieldByName('je').Value; 
          adoquery3.ExecSQL;
          adoquery2.Next; 
          inc(i);
        end; 
    end;                 //记录adoQuery2的指针,下一组5条记录循环从 if 前开始重复