是这样的。我在ADOTable1的onCalcFields事件中写了如下的代码。用于合计(heji)字段。程序运行时没有什么问题。但用DBNavigator1的"+"号增加一条记录时,出现了错误对话框显示为"
Project shoufei.exe raised excekption class EConvertError with message "is not a valid integer value'. process stopped.use step or run to continue"
onCalcFields事件的代码: ADOTable1.FieldByName('heji').Value:= ADOTable1.fieldbyname('shihuafei').AsInteger+ADOTable1.fieldbyname('iphuafei').AsInteger;其中heji的计算字段我设置为:integer 。shihuafei 和iphuafei两个字段我在access中设置为"文本型"的。。
请哪位朋友告诉我怎么做?

解决方案 »

  1.   

    可能是shihuafei 和iphuafei两个字段有空值或者非法字符,
    先判断:
    try
      StrToInt(ADOTable1.fieldbyname('iphuafei').AsString);
      StrToInt(ADOTable1.fieldbyname('iphuafei').AsString);
    except
      exit;
    end;
    ADOTable1.FieldByName('heji').Value:= ADOTable1.fieldbyname('shihuafei').AsInteger+ADOTable1.fieldbyname('iphuafei').AsInteger;
      

  2.   

    对,我也认为是你输入在ShiHuaFei字段和IPHuaFei字段中的数据不是合法的串,即这个串不能合法转换成对应的数字,比如你想将字串“士大夫上”转换成数字,可能吗?最后把你的程序放入异常段中,那样比较安全:try
      ADOTable1.FieldByName('heji').Value:= ADOTable1.fieldbyname('shihuafei').AsInteger+ADOTable1.fieldbyname('iphuafei').AsInteger;
    except
      on E:Exception do 
        ShowMessage('字段ShiHuaFei或字段IPHuaFei内容不合法,无法进行合理转换');
    end;
      

  3.   

    刚刚执行插入一条记录的动作时,shihuafei 和iphuafei这个字段肯定是空的啊。是不是要进行转换类型呢?
      

  4.   

    if (ADOTable1.fieldbyname('shihuafei').AsString<>'')and
      (ADOTable1.fieldbyname('iphuafei').AsString<>'') thenADOTable1.FieldByName('heji').Value:= ADOTable1.fieldbyname('shihuafei').AsInteger+ADOTable1.fieldbyname('iphuafei').AsInteger
      

  5.   

    to: FrameSniper(框架狙击手)谢谢你的回答。。不过,,不存在你说的中文转化为数字的问题。因为刚刚执行插入一条记录的动作时,shihuafei 和iphuafei这个字段肯定是空的啊。
      

  6.   

    哈哈哈。。 renzhm(戴尔飞) 谢谢你。。你的方法对了。我这就结贴。。
      

  7.   

    var
      shihuafei,iphuafei:Integer;if ADOTable1.fieldbyname('iphuafei').AsString='' then
      iphuafei:=0
    else
      iphuafei:=ADOTable1.fieldbyname('iphuafei').AsInteger;
    if ADOTable1.fieldbyname('shihuafei').AsString='' then
      shihuafei:=0
    else
      shihuafei:=ADOTable1.fieldbyname('shihuafei').AsInteger;ADOTable1.FieldByName('heji').Value:=iphuafei+shihuafei;
      

  8.   

    对不起。 renzhm(戴尔飞) 的回答直接解决了我的问题。你和heixiu1980(heixiu1980) 的回答虽然指出了问题所在。但对于我说的"刚刚执行插入一条记录的动作时,shihuafei 和iphuafei这个字段肯定是空的啊。"并没有解决(只是避免了空字符的情况)当然昨晚结贴时也没在意现在看来的确不公平。。以后结贴时我会小心的:)。sorry。。多谢各位高手帮助!!!