Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 07-08-2011
cdac901 cdac901 is offline
Miembro
 
Registrado: feb 2008
Posts: 12
Poder: 0
cdac901 Va por buen camino
Desactivar trigger

Hola con respecto a los generator te recomiendo hacer un store procedure consultando el MAX del campo que afecta dicho generator y luego actualizarlo con el resultado que genero la consulta mas 1

con respecto al desativar los trigger seria algo asi, lo probe y funciono:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, IBDatabase, IBCustomDataSet;

type
  TForm1 = class(TForm)
    IBDataSet1: TIBDataSet;
    IBDataSet2: TIBDataSet;
    IBTransaction1: TIBTransaction;
    IBDatabase1: TIBDatabase;
    btActivar: TButton;
    IBTransaction2: TIBTransaction;
    btDesactivar: TButton;
    procedure btActivarClick(Sender: TObject);
    procedure btDesactivarClick(Sender: TObject);
  private
    { Private declarations }
    procedure ProcesarTrigger( lActivar: Boolean );
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.ProcesarTrigger( lActivar: Boolean );
var
   cActivar: string;
begin
   if lActivar then
      cActivar := ' ''ACTIVE ;'' '
   else
      cActivar := ' ''INACTIVE ; '' ';

   IBDataSet1.Close;
   IBDataSet1.SelectSQL.Text := 'SELECT ''ALTER TRIGGER '' || A.RDB$TRIGGER_NAME ||' + cActivar +
                                '  FROM RDB$TRIGGERS A ' +
                                ' WHERE (A.RDB$SYSTEM_FLAG = 0) ' +
                                '   AND (A.RDB$TRIGGER_INACTIVE = 0) ' +
                                '   AND (A.RDB$TRIGGER_TYPE IN (1, 17, 113, 25)) ';
   IBDataSet1.Open;

   if IBDataSet1.RecordCount > 0 then
      while not IBDataSet1.Eof do
         try
            IBDataSet2.Close;
            IBDataSet2.SelectSQL.Text := IBDataSet1.Fields[0].AsString;
            IBDataSet2.Prepare;
            IBDataSet2.ExecSQL;
            IBTransaction2.Commit;
         except
            on e: Exception do
               begin
                  ShowMessage(e.Message);

                  if IBTransaction2.Active then
                     IBTransaction2.Rollback;
               end;
         end;

   IBTransaction1.Commit;
end;

procedure TForm1.btActivarClick(Sender: TObject);
begin
   ProcesarTrigger( True );
end;

procedure TForm1.btDesactivarClick(Sender: TObject);
begin
   ProcesarTrigger( False );
end;

end.


Espero te sirva.
Saludos.
Responder Con Cita
 



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
Un trigger que dispara un procedimiento que dispara un trigger... sitrico Firebird e Interbase 5 04-06-2007 22:05:13
desactivar usb anubis Varios 2 22-04-2007 03:57:09
Desactivar MSN jorodgar Varios 6 19-05-2005 14:21:13
Desactivar trigger desde procedimiento almacenado oliverinf Firebird e Interbase 5 09-10-2004 16:17:45
desactivar Alt+TAB en xp M@rcos API de Windows 2 15-07-2003 17:00:24


La franja horaria es GMT +2. Ahora son las 16:37:48.


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