Ver Mensaje Individual
  #14  
Antiguo 01-03-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por anubis Ver Mensaje
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 Ver Mensaje
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita