function NuevoIdCliente():integer ;
begin
Result:= 1;
with dtm do
begin
if qryNClientes.Active then qryNclientes.Close;
qryNClientes.Open;
if not qryClientes.IsEmpty then
if (qryNclientes.Fields[0].AsInteger > 0) then
Result:= qryNclientes.Fields[0].AsInteger+1;
qryNclientes.Close;
end;
end;
dtm es mi Datamodule
qryNClientes es una Tquery y en su SQL tiene : SELECT MAX(IDCLIENTE) FROM CLIENTES;
Si buscas por el foro encontrarás más información.
si tu programa es en red, en el BeforePost, busca el NuevoIdCliente de nuevo... no vaya a ser que otro gracioso en la red haya añadido un registro con ese Id
Saludos