执行
T:=QTo.Fields[0].AsInteger;
时出错,说QTo.Fields[0].AsInteger值非法,值超范围了怎么办?
(Fields[0]字符型,值是非'0'开头十位阿拉伯数字,T:integer)

解决方案 »

  1.   

    T:int64;T:=int64(QTo.Fields[0].AsInteger)
      

  2.   

    var
      MainF: TMainF;
      I,J,P:Integer;              //I:计数器;J:源表中的记录数;T:临时;P:主键最大值
      T:Int64;
    begin
    ……
      OpenQuery(QTo,'select max(EmpId),Max(PK) from S_EmpInfo');
      T:=int64(QTo.Fields[0].AsInteger);
    ……
    end;
    改成了这样也是一样的报错!
      

  3.   

    你的字段里面放的什么东西??如果是个很大的数只能用asstring了
      

  4.   

    var
      MainF: TMainF;
      I,J,P:Integer;              //I:计数器;J:源表中的记录数;T:临时;P:主键最大值
      T:Int64;
    begin
    ……
      OpenQuery(QTo,'select max(EmpId),Max(PK) from S_EmpInfo');
      T:=StrToInt64(QTo.Fields[0].AsString);
    ……
    end;
      

  5.   

    楼主啊,10位数字不会超出integer的范围2147483647?用int64或者字串吧
      

  6.   

    那就不要用 AsInteger 啊,改成上面的 AsString 后转换为 Int64 也是可以的。