某些子段的值为空另:query2.Fields[130].value  :=s +query2degf.AsFloat  ;
——〉query2.Fields[130].asfloat  :=s +query2degf.AsFloat  ;

解决方案 »

  1.   

    请在BDE中的enable bcd设为True
      

  2.   

    因为 query2.fields[k] 对应数据库的值是字符型,所以如果有这样的值 query2.fields[k].value = '' ,你再用 query2.fields[k].AsFloat 将出错:‘’is not a valid floating point value.
    你应该先检查 
      if Length(query2.fields[k].AsString)=0 then Continue; // 或者其他语句
      

  3.   

    谢谢各位,我会去试一试的,不过还有一事请教是:如何知道想query.fields.value返回的值的类型呢?
      

  4.   

    通过 query.fields.datatype 属性(TFieldType)
    type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid);
      

  5.   

    s :=query2.Fields[i].AsFloat *query2.Fields[k].AsFloat +s 
    这段代码有问题,如果query2.Fields[k]有一个值是空,此时进行AsFloat
    转换就会出错,因为‘’不是能转换为一个有效的FLOAT值,qkl(康)的解答是对的。