Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2018
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.490
Poder: 21
MAXIUM Va camino a la fama
Gracias Neftali.

Básicamente registrar fecha-hora, registro que fue eliminado, editado o agregado y el usuario que lo realizó.
Responder Con Cita
  #2  
Antiguo 16-02-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por MAXIUM Ver Mensaje
Gracias Neftali.

Básicamente registrar fecha-hora, registro que fue eliminado, editado o agregado y el usuario que lo realizó.
Podes crear un archivo donde guardar toda la actividad que realiza un usuario sobre determinada tabla y al efecto crear un trigger que realize la tarea, por ejemplo:
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER TRIGGER PERSONA_BI FOR PERSONA
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
  DECLARE VARIABLE V_ACTION   VARCHAR(12);
  DECLARE VARIABLE V_ID       INTEGER;
  DECLARE VARIABLE V_NOMBRE   VARCHAR(40);
  DECLARE VARIABLE V_DIRECC   VARCHAR(40);
  DECLARE VARIABLE V_LOCALID  INTEGER;
  DECLARE VARIABLE V_TELEF    VARCHAR(15);
BEGIN

  IF (INSERTING) THEN  
  BEGIN
    IF (NEW.ID IS NULL) THEN
      NEW.ID       = GEN_ID(G_PERSONA, 1);
    V_ID           = NEW.ID;
    V_NOMBRE       = NEW.NOMBRE;
    V_DIRECC       = NEW.DOMICILIO;
    V_LOCALID      = NEW.LOCALID;
    V_TELEF        = NEW.TELEFONO;
    V_ACTION       = 'INSERCION';
  END
  ELSE IF (UPDATING) THEN  
  BEGIN
    V_ID     = OLD.ID;
    V_NOMBRE       = NEW.NOMBRE;
    V_DIRECC       = NEW.DOMICILIO;
    V_LOCALID      = NEW.LOCALIDAD_ID;
    V_TELEF        = NEW.TELEFONO;
    V_ACTION       = 'MODIFICACION';
  END
  ELSE             
  BEGIN 
    V_ID           = OLD.ID;
    V_NOMBRE       = OLD.NOMBRE;
    V_DIRECC       = OLD.DOMICILIO;
    V_LOCALID      = OLD.LOCALIDAD_ID;
    V_TELEF        = OLD.TELEFONO;
    V_ACTION       = 'BORRADO';
  END

 
  INSERT INTO PERSONA_HISTO (ID, PERSONAID, NOMBRE, DOMICILIO, LOCALIDADID,
    TELEFONO, USER_NAME, DATETIME, REMOTE_ADDR, SESSION_ID, TYPE_ACTION)

  VALUES (GEN_ID(G_PERSONA_HISTO, 1), :V_ID, :V_NOMBRE, :V_DIRECC, :V_LOCALID, :V_TELEF, 
    (SELECT CURRENT_USER FROM RDB$DATABASE),
    (SELECT CURRENT_TIMESTAMP FROM RDB$DATABASE),
    (SELECT RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS') FROM RDB$DATABASE),
    (SELECT RDB$GET_CONTEXT('SYSTEM', 'SESSION_ID') FROM RDB$DATABASE),
    :V_ACTION);

END^

SET TERM ; ^
Donde PERSONA es la tabla a controlar y G_PERSONA su secuenciador. Mientras que PERSONA_HISTO sería la tabla de historial y G_PERSONA_HISTO su secuenciador.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 16-02-2018
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.490
Poder: 21
MAXIUM Va camino a la fama
Cómo siempre, la mejor comunidad Analizaré las propuestas. Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Limitar el numero de lineas de detalle a imprimir identsoft Impresión 3 04-12-2012 16:52:49
Firebird Limitar Numero de registros JXJ Firebird e Interbase 3 26-08-2011 17:42:07
limitar Número de caracteres de un DBGRid georgejg Varios 8 29-04-2008 14:21:26
Limitar ingreso a un solo numero arespremium OOP 16 26-09-2007 19:58:36
Limitar número de usuarios concurrentes mlara Firebird e Interbase 0 25-11-2006 21:13:38


La franja horaria es GMT +2. Ahora son las 18:02:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi