+ -
当前位置:首页 → 问答吧 → adoquery 死循环

adoquery 死循环

时间:2011-08-28

来源:互联网


第一条记录数量不够的话取下一条记录, 加在判断里面就死循环了,
adoquery。next不加在判断里面就遍历所有记录()

with ADOQuery2 do
  begin
  close;
  SQL.Clear;
  SQL.Add('Select * FROM tb_buy1 where commodityname like :p and specs like :p1 and level like :p2 and companyname like :p3');
  Parameters.ParamByName('p').Value:=trim(combobox2.text);
  Parameters.ParamByName('p1').Value:=trim(combobox3.text);
  Parameters.ParamByName('p2').Value:=trim(combobox4.text);
  Parameters.ParamByName('p3').Value:=trim(combobox5.text);
  open;//查找符合要求的记录 (这里我一共就三条记录,符合的也是三条,并不是记录太多速度慢)
  s1:=strtofloat(edit9.Text);//自己输入的数量
  while not adoquery2.Eof do
  begin
  s:= adoquery2.fieldbyname('number').Asfloat;
  s3:= adoquery2.fieldbyname('price').Asfloat;
  if(s<s1) then begin//数量过大
  cb:=cb+s*s3
  s1:=s1-s;
  adoquery2.Next ;
  end
  else begin  
  s4:=s1*s3;
  cb:=cb+ s4;
  end;

   
  end;

  edit13.text:= FormatFloat('0.0',cb)
  end;

作者: a381391536   发布时间: 2011-08-28

Delphi(Pascal) code


 while not adoquery2.Eof do
  begin
  s:= adoquery2.fieldbyname('number').Asfloat;
  s3:= adoquery2.fieldbyname('price').Asfloat;
  if(s<s1) then begin//数量过大
  cb:=cb+s*s3
  s1:=s1-s;
  end
  else begin   
  s4:=s1*s3;
  cb:=cb+ s4;
  break;//跳出循环
  end;
  adoquery2.Next ;//这个最好放在这里
  end;



作者: babydog01   发布时间: 2011-08-28

热门下载

更多