Ver Mensaje Individual
  #19  
Antiguo 05-01-2014
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
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
// si es nulo, es registro nuevo, informo pk con generador, usuario y timestamp del alta
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); // informo usuario y timestamp de actualizacion
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
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita