Yo lo he resuelto con esta funcion que me busca los huecos en los campos ID, tal vez para muchos datos no funcione porque puede enlentecer la PC
Código Delphi
[-]
FUNCTION TDM_BD.ValidIdReg(TOrigen,Tablit: TADOTable; Campo: String):Integer;
Var I: Integer;
begin
{Funcion definida para campos numericos, busca el numero entero inmediato
es para asignar el valor para los campos IdReg, por ejemplo}
Tablit.TableName:=TOrigen.TableName;
Tablit.Open;
Tablit.Clone(TOrigen);
I:= 0;
While Tablit.Locate (Campo, I,[loCaseInsensitive]) = True do
begin
I:= I+1;
end;
If Tablit.Locate (Campo, 0,[loCaseInsensitive]) = False then Result:= 0 Else Result:= I;
Tablit.Close;
end;
TOrigen es la tabla donde esta el campo al cual voy a asignar el valor Id
Tablit es la tabla donde realizo la busqueda, por defecto una tabla vacia solo con la ConnectionString asignada.
Se utiliza asi:
Código Delphi
[-]
procedure TDM_BD.T_PCTE_NewRecord(DataSet: TDataSet);
begin
F_PCTE.cxDBTextEdit1.SetFocus;
T_PCTE_IdPcte.Value:=ValidIdReg(T_PCTE_, DM_BD_Ctrl.TCtrl, T_PCTE_IdPcte.FieldName);
T_PCTE_F_Ingreso.Value:=F_Prin.Calendario.Date;
end;