Antes que me digan que estoy cinco años tarde, aclaro, andaba buscando otra cosa y por casualidad llegue aqui. Al ver los posts del hilo, recordé que tengo algo similar a lo que mencionan, solo que no ocupo generadores; para insertar un nuevo registro en cierta tabla lo hago mediante un StoredProc, se que no le servira para nada a quien inicio el hilo, pero ojala le sea de utilidad a alguien más, aqui esta el codigo

.
Código SQL
[-]
CREATE PROCEDURE SP_MOVIMIENTOS (
idajuste numeric(15,0),
fecha date,
movimiento varchar(70),
cargo numeric(15,2),
ajusto varchar(70),
valido smallint,
idtienda numeric(15,0),
idmov numeric(15,0))
as
declare variable ultimo numeric(15,0);
begin
Select max(idmov)+1 from movimientos into ultimo;
if (ultimo>=0) then
idmov=ultimo;
insert into movimientos (idajuste, idmov, fecha, movimiento, cargo, ajusto, valido, idtienda)
values (:idajuste, :idmov, :fecha, :movimiento, :cargo, :ajusto, :valido, :idtienda);
end^
Aqui dejo el codigo que utilizo en delphi al guardar el nuevo registro, y como notarán el parametro IDmov se lo paso en el StoredProc y en delphi solo mando los demás parametros.
Código Delphi
[-]
With spMvtos Do
Begin
ParamByName('idajuste').AsInteger:=idajuste;
ParamByName('fecha').AsDate :=Date();
ParamByName('idmov').AsInteger :=0;
ParamByName('movimiento').AsString :='AJUSTE DE INVENTARIO';
ParamByName('cargo').AsFloat:=xImporte;
ParamByName('ajusto').AsString :=Ajusto;
ParamByName('valido').AsInteger:=1;
ParamByName('idtienda').AsInteger:=frDatos.idTienda;
ExecProc;
end;