死循环的问题

来源:互联网  时间:2016/8/18 19:57:15

关于网友提出的“ 死循环的问题”问题疑问,本网通过在网上对“ 死循环的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 死循环的问题
描述:

with form1.Table1 do
  begin
    pinming := edit1.Text ;
    first;
    if locate('品名',pinming,[]) then
    begin
      min := form1.Table1.FieldValues['进价'] ;
      max := form1.Table1.FieldValues['进价'] ;
      next;
      while not eof do
      begin
        if  locate('品名',pinming,[]) then
          If FieldValues['进价']>max then
          max := form1.Table1.FieldValues['进价']
          else if FieldValues['进价']<>
          min := form1.Table1.FieldValues['进价'];
          next;
       end;


解决方案1:

如果能够locate数据的话就肯定是死循环了
因为locate是从表中第一条记录开始搜索的,并不是从当前记录向后的
所以你的如下代码将导致死循环
      while not eof do 
      begin
        if  locate('品名',pinming,[]) then
          If FieldValues['进价']>max then
          max := form1.Table1.FieldValues['进价']
          else if FieldValues['进价']<>
          min := form1.Table1.FieldValues['进价'];
          next;
       end;
如果你想要求出最大进价和最小进价的话,
可用Sql语句得到:
query.close;
query.sql.clear;
query.sql.add('select max(进价) as 最大进价, min(进价) as 最小进价 from table');
query.sql.add('where 品名='''+pinming+'''');
query.sql.add('group by 品名');
query.open;

上一篇SQL Server数库中使用SQL统计语句的问题?
下一篇如何获取局域网中的sql server数据库名,和该主机名(ip或者机器名)
明星图片
相关文章
《 死循环的问题》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)