PDA

Ver la Versión Completa : Conexion deTrigger con Delphi y Firebird


JoanKa
23-05-2005, 10:41:51
Muy buenas a todos.

En una aplicacion de D6 tengo componentes IBX (IBDatabase, IBTransaction, IBTable y DataSource) y varios DBEdit (Codigo,nombre, fecha, telefono, etc)

Y cuando doy de alta a un cliente no tengo problema alguno ya que me graba todo bien en la BD de FIrebird en su respectiva tabla.

Pero ahora quisiera hacerlo mediante los Famosos Triggers, pero desconozco como se hace la conexion con los componentes de Delphi y con Firebird.

Ustede que me sugieren, lo que pasa que es la primera vez que estoy usando estos y no lo tengo claro.

Gracias y Saludos.

defcon1_es
23-05-2005, 12:45:39
Hola.
Un trigger se ejecuta cuando se activa su evento, es decir, es código que se ejecuta automáticamente, por tanto, no es necesario ningún componente para ejecutarlo.

Si te hace falta ejecutarlo en determinadas condiciones, entonces es candidato a ser un procedimiento almacenado, no un disparador (trigger).

Salu2.

JoanKa
23-05-2005, 13:13:02
Pero como me explique como envio los datos txt_cod,txt_nom, fecha, txt_tel de delphi a trigger es decir como los recepciono en firebird.

No se si me estoy explicando bien.

Gracias

defcon1_es
23-05-2005, 18:19:43
Según lo que dices, lo que te hace falta es un procedimiento almacenado.
A un trigger no le puedes pasar parámetros, porque no lo puedes ejecutar tu, es automático.

Lo que realmente necesitas es definir un procedimiento almacenado que acepte esos parámetros de entrada (txt_cod, etc) y realice una inserción en la tabla de clientes con esos valores, ¿no?.

Ejp:

CREATE PROCEDURE INSERTAR_CLIENTE(PAR_CODIGO VARCHAR(4), ...)
AS
BEGIN
INSERT INTO Clientes (Codigo, Nombre, ...)
VALUES (:PAR_CODIGO, ...);
END


En delphi puedes usar (ejecutar) un procedimiento almacenado con una TIBQuery o con un TIBStoredProc.

1) Usando un TIBQuery

with query1 do
begin
SQL.Clear;
SQL.Add('EXECUTE PROCEDURE INSERTAR_CLIENTES :Codigo, :Nombre, :fechaalta, :telefono');
//Asignamos los valores a los parámetros...
ParamByName('CODIGO').AsString := txt_Cod;
....
ExecSQL;
end;


2) Usando un TIBStoredProc

with IbStoredProc1 do
begin
//Asignamos los valores a los parámetros...
ParamByName('CODIGO').AsString := txt_Cod;
....
ExecProc;
end;