repeat
              form1.ADOQuery2.Last;                if form1.ADOQuery2.FieldByName('价格j').AsString=s1 then
                 begin                   v1:=form1.ADOQuery1.FieldByName('数量s').AsInteger+
                       form1.ADOQuery2.fieldbyname('数量j').AsInteger;
                   f1:=v1*form1.ADOQuery2.fieldbyname('单价s').AsCurrency;
                   c3:=currtostr(f1);
                   c1:=inttostr(v1);
                   c2:= form1.ADOQuery2.fieldbyname('单价s').AsString;
                   form1.ADOQuery1.Post;
                   SQLStr:= 'insert into '+trim(label1.Caption)+'("数量j","单价j","金额j")'+
                            ' values('+c1+','+c2+','+c3+')';
                   form1.ADOQuery3.close;
                   form1.ADOQuery3.SQL.Clear;
                   form1.ADOQuery3.SQL.Text:=SQLStr;
                   form1.ADOQuery3.ExecSQL;
                   break;
                 end;
               showmessage('good');
               form1.ADOQuery2.Prior;
             until true;

解决方案 »

  1.   

    你中间用了break退出了循环,怎么去循环呢?
      

  2.   

    repeat...until true
    表示“循环...知道true被满足为止”,结果呢,当然是一次执行后就退出啦。
    换成repeat...until false试试看,怎么样,是不是死调了?呵呵。
    看看你的代码,
    repeat(开始)...query.last(重置query)...if(如果不满足break条件)...query.prior(找上一条记录)...until false(再回到上面去循环)...query.last(重置query,怎么搞得,又回到前面的位置了,这样会死掉的???)