Ver Mensaje Individual
  #3  
Antiguo 21-07-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Reputación: 23
santiago14 Va por buen camino
Red face ID en firebird

Una manera sencilla sería poner un generador para el identificador.
Y en el trigger before insert llamarlo y obtener el id.

Otra manera, creo yo mas razonable, es desde el código delphi hacer la cosa en dos pasos.
Lo primero sería un select buscando el último nro de ID ingresado, a ver:

...iniciamos la transaccion y todo eso.

Código SQL [-]
Nueva_ID = select max(id) + 1 from tabla

Luego, con eso ya podemos hacer el insert sin problemas:
Código Delphi [-]
with query do
begin
  close;
  sql.clear;
  sql.add('Insert into tabla values (:ID, :campo2, ...)');

  parambyname('ID').asInteger:=Nueva_ID
  try
    execSQL;
  except
    raise;
  end;
end;

...terminamos la transacción y listo.
Por último, eso de no tener clave primaria en una tabla no es bueno, procura siempre tenerla.

Espero te sirva. Esto no es lo mejor pero funciona bastante bien.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 21-07-2008 a las 19:03:13. Razón: Me faltó el "+ 1" en el Select
Responder Con Cita