在外部定义全局变量 var i: integer; 并且在每次打开表前赋初值 i:=1;给DataSet加上个计算整型字段 No在OnCalcFields事件中加入代码:With DataSet do begin FieldByName('No').asInteger:=i; i:=i+1; end;一定可以!
其实就是循环判断: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; 请大家指正!!!
并且在每次打开表前赋初值 i:=1;给DataSet加上个计算整型字段 No在OnCalcFields事件中加入代码:With DataSet do
begin
FieldByName('No').asInteger:=i;
i:=i+1;
end;一定可以!
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;
请大家指正!!!