Hola,
Esta es la función que te vale para cualquier generador
Código Delphi
[-]function Generador( generador: string): integer;
begin
SQLGenerador.CLose;
SQLGenerador.SQL.Clear;
SQLGenerador.SQL.Add('select first 1 GEN_ID('+generador+',1) from RDB$DATABASE');
SQLGEnerador.Open ;
Result:= SQLGenerador.Fields[0].AsInteger;
end;
La llamo de la siguiente manera
Código Delphi
[-]procedure TDM.CDSClienteBeforePost(DataSet: TDataSet);
begin
if Dataset.FieldByName('idCliente').IsNull then
begin
Dataset.FieldByName('idcliente').AsInteger:= Generador('CLIENTE');
Dataset.FieldByName('USUARIOALTA').AsString:= WUsuario;
Dataset.FieldByName('LOGA').AsDateTime:= now;
end;
ActualizarLog(Dataset); end;
function TDM.ActualizarLog(Dataset: TDataset): boolean;
begin
Dataset.FieldByName('USUARIOMODIF').AsString:= WUsuario;
Dataset.FieldByName('LOGM').AsDatetime:= now;
Result:= True;
end;
Todas las tablas tienen los campos USUARIOALTA, LOGA, USUARIOMODIF y LOGM para saber quién ha dado de alta el registro y quién es el último que lo ha modificado
Espero que te sirva de ayuda.
Un saludo