Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Tratando de exprimir los eventos de interbase (https://www.clubdelphi.com/foros/showthread.php?t=7095)

gario 03-02-2004 19:13:13

Tratando de exprimir los eventos de interbase
 
Hola a todos\as:

Estoy realizando una aplicancion con interbase y quiero usar los eventos para refrescar la informacion en los equipos conectados al servidor.

He conseguido recuperar eventos con nombres predefinidos, pero siguiendo la ayuda y algunos textos de internet puedo generar eventos segun el valor de un campo de un registro. Eso ha sido facil con campos de texto, pero a mi me seria mucho mas útil si el evento que lanzo es una fecha, porque asi solo actualizaria en los terminales que estubiesen monstrando informacion de ese dia.

He probado con Post_event new.fecha y haciendo un cast en el trigger
post_event cast(new.fecha as varchar(10)). tambien he creado una variable en el trigger y primero le metia la fecha con el cast y despues ejecutaba post_event variable.

Para capturar el evento he registrado en el IBEvent la fecha en los dos formatos (primero dia y despues mes y al reves) y nada.

Estoy tratando de hacer algo imposible?

Y rizando mas el rizo seria posible generar nombres de eventos como "I03/02/2004", "M03/02/2004" o "B03/02/2004" segun sea modificar insertar o borrar?... me vendria de perlas para minimizar el trafico en mi red.

Un saludo y muchas gracias por leerme :cool:

jachguate 03-02-2004 23:23:25

El formato que te devuelve el cast(undate as VarChar(10)) es 'yyyy-mm-dd' y creo que no debieras tener ningun problema para postear un evento construido en una variable... aunque no lo he probado, simplemente verifique que compile...

digamos

Código:

set autoddl off;
set term ^ ;

create trigger pruebas
  for colb_cuota
  active after update AS

declare variable event_nm VarChar(50);

Begin
  select 'M'||cast(new.fecha_max_pago as VarChar(10))
    from rdb$database
    into :event_nm;
  post_event :event_nm;
end;
^

set term ; ^
commit;
set autoddl on;

Hasta luego y espero te sea de ayuda

;)

gario 05-02-2004 02:03:27

Funciona
 
Lo dicho funciona a las mil maravillas. No habia compuesto bien la cadena usaba algo asi como 'M' + '-' + .... a parte de poner mal el formato de la fecha.

Millones de gracias por ayudarme a acceder lo imprescindible a la base de datos.

:D :D :D :D :D :D :D

mlara 25-02-2004 16:14:53

Decidí continuar este hilo porque mi problema está muy relacionado.

1. Creo una tabla
2. Creo un trigger para esa tabla, digamos:


Código:

CREATE TRIGGER "Debug_NewRecord" FOR "Debug"
AFTER INSERT
AS
BEGIN
  POST_EVENT 'DNEW';
END

3. En mi app. pongo un TIBEvents en una forma, en la propiedad Events pongo DNEW. Y el código respectivo en el evento OnEventAlert:


Código:

Memo1.Lines.Add(EventName);
4. Ejecuto IBEvents1.RegisterEvents cuando abro la forma o ventana donde tengo el TIBEvents. La conexión a la base de datos ya se ha realizado con anterioridad, y la propiedad Database del TIBEvents está bien.
5. Luego inserto un registro desde IBConsole, desde mi propia aplicación con un TIBQuery (ejecutando el método ExecSQL), desde mi propia aplicación con un TIBTable (hasta le hago Post manual).
6. He intentado haciendo AutoRegister verdadero y poniendo Register a verdadero.

Después de todo esto: No pasa nada. No obtengo resultados.

Alguien sabe qué puede estar pasando?

Uso InterBase 7.1 y Delphi 7.

José Castillo R 26-10-2004 18:54:27

Commit
 
Tienes que hacer un Commit despues del Post.

mlara 31-10-2004 23:36:36

Desafortunadamente no estoy trabajando en este momento con los eventos.. pero probaré y entonces les contaré qué pasó. Gracias.

rastafarey 01-11-2004 18:42:27

Si puedes ver el ejemplo de "SURVEYS" que biene con ibObjects creo que es uan de las mejores soluciones para la notificacion de los cambios a los clientes.
Ya los componentes de bienen dotado con las propiedades necesarias para usar este funcionalidad


La franja horaria es GMT +2. Ahora son las 06:59:52.

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