控件:DBGIRD “计算”按纽
字段:
原有数  TISHU
输入数  CHOUTI
var
xb:integer;
xc:integer;
begin
adotable1.open;
xb:=adotable1.FieldByName('chouti').Asinteger;
xc:=adotable1.FieldByName('tishu').Asinteger;adotable1.first;
while not adotable1.Eof doif xb>xc then
application.messagebox(‘出错’,'检查')
else
adotable1.Next
end;为什么执行后死机???
如果不要IF后面的代码,ADOTABLE1.NTE正常。
请大家帮我一下???

解决方案 »

  1.   

    没有什么对话框,程序就死了。但是去掉WHHIL语句,就执行正常。
      

  2.   

    var
    xb:integer;
    xc:integer;
    begin
    adotable1.open;
    xb:=adotable1.FieldByName('chouti').Asinteger;
    xc:=adotable1.FieldByName('tishu').Asinteger;adotable1.first;
    while not adotable1.Eof doif xb>xc then
    begin
    application.messagebox(‘出错’,'检查');
    exit;//退出循环
    end;
    else
    adotable1.Next
    end;
      

  3.   

    提示 ELSE有问题,不能执行。
      

  4.   

    else前的end后没有‘;’,对不起:(
      

  5.   

    var
    xb:integer;
    xc:integer;
    begin
    adotable1.open;
    adotable1.first;
    while not adotable1.Eof do
    xb:=adotable1.FieldByName('chouti').Asinteger;
    xc:=adotable1.FieldByName('tishu').Asinteger;
    if xb>xc then
    begin
    application.messagebox(‘出错’,'检查');
    exit;//退出循环
    end
    else
    adotable1.Next
    end;
    可以了,在试试
      

  6.   

    你的程序死循环,当然死了,试试我的:
    var
    xb:integer;
    xc:integer;
    begin
        adotable1.open;    adotable1.first;
        while not adotable1.Eof do begin
           xb:=adotable1.FieldByName('chouti').Asinteger;
           xc:=adotable1.FieldByName('tishu').Asinteger;       if xb>xc then begin
              application.messagebox(‘出错’,'检查');          abort
           end;       adotable1.Next
        end;
    end;
      

  7.   

    应该不是死循环的问题。
    如果判断条件不满足应该跳到next一句;
    你用断点跟踪的结果怎样?
      

  8.   

    jinfengok(砸锅卖铁来上网) ( 
    你的代码可以执行,程序不死,可是不能判断???
      

  9.   

    var
      xb:integer;
      xc:integer;
    begin
        adotable1.open;    adotable1.first;
        while not adotable1.Eof do begin
           xb:=adotable1.FieldByName('chouti').Asinteger;
           xc:=adotable1.FieldByName('tishu').Asinteger;       if xb>xc then
           begin
              application.messagebox(‘出错’,'检查');
              Break;
           end;       adotable1.Next
        end;
    end;
      

  10.   

    可能运行谢谢!!
    为什么我想取得DBGRID的字段的一个值为什么不行?采用什么方法???
    xb:=DBGRID1.FIELDBYNAME('CHOUTI').ASINTETER;
    为什么提示这句话有错误????
      

  11.   

    DBGRID的字段都是STRING类型的,你应该把它转成INTETER型,
    试一下:xb:=STRTOINT(DBGRID1.FIELDBYNAME('CHOUTI').ASSTRING)
      

  12.   

    为什么要用dbgrid1.fieldbyname()??直接用数据源不好么?adotable1.fieldbyname().asinteger?
      

  13.   

    jinfengok(砸锅卖铁来上网)的代码的意思估计和你的不一样。他是判断每条纪录的两个字段,你是判断条件始终都一样