Delphi - Generadores con delphi

 
Vista:

Generadores con delphi

Publicado por Isabel (3 intervenciones) el 26/09/2002 11:45:46
Hola a todos!
Estoy realizando un aplicacion con delphi e interbase. Tengo una tabla "Actualizaciones", y la clave quiero que sea auntoincremental. Para ello he creado un generador y un trigger. El problema es que cuando voy a insertar un nuevo registro me aprece un error, el campo clave no tiene valor.
No se supone que al insertar un nuevo registro, la bd debe generar un número para la clave?
Muchas gracias. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Generadores con delphi

Publicado por BigLuis (463 intervenciones) el 26/09/2002 17:10:52
Lo que sucede es que el campo de la clave tiene que ser not null ya que al ser para una clave esto es necesario.Al ser not null la BD antes de asignar un numero con el generador chequea aquella propiedad y lanza una excepcion.
Si no quieres utilizar la porpiedad adecuada de los componentes de
acceso a datos (creo que es GeneratorField en Delphi 6) puedes crear una vista en la BD con el siguiente texto
CREATE GENERATOR GENERADOR;

create view vista_netx_id //(nombre de la vista)
(next_id) //(campo que se creara)
as select gen_id(generador,1) from RDB$DATABASE;
En tu aplicacion creas una funcion
Function nuevoID:Integer;
begin
Query.SQL.add('select next_id from vista_next_id');
Query.Open;
try
result:=Query.Fields[0].asinteger;
finally
Query.close;
end;
end;

Luego en el evento afterinsert del componente de datos escribes
midataset.fieldbyname('Clave').asinteger:= NuevoID; // (la funcion)
Si algo no lo entiendes hazmelo saber
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar