用 DataSet.RecNo 或加计算字段

解决方案 »

  1.   

    用dataset.recno好像不对,只显示-1
      

  2.   

    在外部定义全局变量 var i: integer;
    并且在每次打开表前赋初值 i:=1;给DataSet加上个计算整型字段 No在OnCalcFields事件中加入代码:With DataSet do 
    begin
         FieldByName('No').asInteger:=i;
         i:=i+1; 
    end;一定可以!
      

  3.   

    其实就是循环判断:procedure AutoID(ds:TDataSource);
    var i,tmpInt:integer;
    begin
    ds.DataSet.First;if  ds.DataSet.IsEmpty then
            begin
           ds.DataSet.Append;             
           ('bh').asstring='' then
           ds.DataSet.FieldByName('bh').asstring:='1' ;
           end;    for i:=1 to ds.DataSet.RecordCount do
         begin      tmpInt:=ds.DataSet.fieldbyname('bh').asinteger;  {保存当前的记录号  a}
            ds.DataSet.Next;          //指向下一条记录  b      if ds.DataSet.FieldByName('bh').asinteger<>tmpInt+1 then     //若b+1<>a
            begin
                if ds.DataSet.Eof then            add_0p_data(ds) //这是一个添加一条空记录的自定义函数    
                else   ds.DataSet.Insert;
            ds.DataSet.FieldByName('bh').asinteger:=tmpInt+1;
            break;
            end;
        end;
    end;
    请大家指正!!!