Hola.
Cita:
Empezado por anubis
Uso un generador asi que no asigno ningun id_producto a "mano".
|
Entonces, para obtener el ID recién generado, sin alterar su valor:
Código SQL
[-]SELECT GEN_ID(G_TUTABLA, 0) AS NEXT_ID FROM RDB$DATABASE
Y para obtener el próximo ID ( incrementando su valor ):
Código SQL
[-]SELECT GEN_ID(G_TUTABLA, 1) AS NEXT_ID FROM RDB$DATABASE
Cita:
Empezado por anubis
Y, sobre sacar el id_producto despues de hacer post y commitretaining, no tengo más remedio que cerrar la tabla y volverla a abrir.
|
No necesariamente. Podes obtener el último ID de forma directa, o haciéndote una función, independientemente de si la tabla está abierta o cerrada:
Código Delphi
[-]
function Tmodulodatos.TuTablaGetLastID: Int64;
begin
IBQuery1.Close;
IBQuery1.SQL.Text := 'SELECT GEN_ID(G_TUTABLA, 0) AS NEXT_ID FROM RDB$DATABASE';
IBQuery1.Open;
Result := IBQuery1.FieldByName('NEXT_ID').AsInteger;
IBQuery1.Close;
end;
Y claro que también como te indica Agustín, al momento de realizar la inserción.
Saludos