第一条记录数量不够的话取下一条记录, 加在判断里面就死循环了,
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;
解决方案 »
- 判断按下按键的应用.没反应
- 请问如何开发安卓系统下的EXE?能在XP下开发安卓系统下的EXE吗?
- 《编译原理》——编译行天下 神龙耀九州
- is not a valid floating value
- access +delphi 中的sql 问题。
- 一个入简单问题
- 菜鸟的问题,在那里定义数据类型
- 紧急!送分!类型转化问题。
- 软件代码工人出来后,初中毕业培训一下就能编码,那咱们怎么办,干什么去呢?印度以前是怎么解决这个问题的?而且入世后,竞争更激烈了,大家的银子会不会减少,大家的位子会不会不稳呢?
- 感谢InsideDelphi! 我做的是把鼠标控制在窗体里。这样窗体是不能移动位置。但要一拖动。鼠标就可以出去了。请赐教!
- 短信机接受到的PDU解码问题。。。
- 求助 内存 被 耗尽
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;
在你判断满足条件了的语句后,需加一条跳出循环语句Break;//跳出While循环语句