Ver Mensaje Individual
  #20  
Antiguo 06-01-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Reputación: 14
bulc Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
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
Parece muy claro. Lo probaré en cuanto pueda. Muchas gracias.
Responder Con Cita