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)
-   -   eventos firedac (https://www.clubdelphi.com/foros/showthread.php?t=95786)

carlomagno 11-08-2022 17:48:19

eventos firedac
 
Hola a tod@s

a ver si alguien ha pasado por lo mismo..
Estoy haciendo un prog con interbase donde un cliente de una sede(cliente) ataca una tabla de otra sede(servidor).
El servidor tambien puede modificar esa tabla. La cuestion es que cuando el cliente modifica la tabla salta un evento que ve el servidor.
Pero si el servidor la modifica, el evento no lo ve el cliente.
Utilizo delphi alexandria y firedac.
Si alguien tiene alguna solucion con otro componente y me puede aconsejar, estaria mu agradecido

gracias

Carlos

Neftali [Germán.Estévez] 12-08-2022 09:54:57

Cita:

Empezado por carlomagno (Mensaje 547909)
...
Pero si el servidor la modifica, el evento no lo ve el cliente.

No me queda claro qué quieres decir con "no lo ve el cliente"...
¿cuando hablas de "eventos", te refieres a esto o a esto?

carlomagno 12-08-2022 10:33:56

Hola

gracias por la ayuda

yo estoy utilizando TFDEventAlerter cin Interbase pero me es igual si el resultado es que busco.
El cliente, en otra sede, no recibe la alerta del evento. En la doc de embarcadero ya me dicen que el cliente no ve las alertas si se trabaja con interbase. No se si esto te aclara la duda...

Neftali [Germán.Estévez] 12-08-2022 10:53:52

Revisa el primer link que te he puesto:
https://docwiki.embarcadero.com/RADS...lerts_(FireDAC)

Explica qué eventos, y cómo se implementan en cada Base de Datos.
En concreto para Interbase tienes esto:


Casimiro Notevi 12-08-2022 11:01:15

Cita:

Empezado por carlomagno (Mensaje 547919)
En la doc de embarcadero ya me dicen que el cliente no ve las alertas si se trabaja con interbase. No se si esto te aclara la duda...

No sé exactamente qué finalidad quieres conseguir, pero lo mismo se puede implementar de otra forma.

Neftali [Germán.Estévez] 12-08-2022 11:33:43

Cita:

Empezado por carlomagno (Mensaje 547919)
yo estoy utilizando TFDEventAlerter cin Interbase pero me es igual si el resultado es que busco.

Cita:

Empezado por Casimiro Notevi (Mensaje 547921)
pero lo mismo se puede implementar de otra forma.

Hombre, cuando no teníamos eventos de Base de Datos, lo implementábamos con pooling y utilizando alguna estrategia (tiempos de consulta variables) para optimizar. Siempre te queda eso, pero la idea de los eventos, es que mejora y optimiza ese comportamiento.

Casimiro Notevi 12-08-2022 11:48:38

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 547922)
Hombre, cuando no teníamos eventos de Base de Datos, lo implementábamos con pooling y utilizando alguna estrategia (tiempos de consulta variables) para optimizar. Siempre te queda eso, pero la idea de los eventos, es que mejora y optimiza ese comportamiento.

Sí, lo comentaba porque me ha parecido leer que no funciona con interbase, pero si funciona entonces es lo mejor y más cómodo ^\||/

carlomagno 14-08-2022 18:29:36

Cita:

Empezado por Casimiro Notevi (Mensaje 547921)
No sé exactamente qué finalidad quieres conseguir, pero lo mismo se puede implementar de otra forma.

Lo que el prog hace es un pedido de una tienda lo preparan otras sedes. Si modifican una cantidaddesde cualquier pc que todos lo vean sin tener que refrescar. El servidor ,que es quien crea el pedido, si le salta la alerta y se refresca sin tener que hacer manualmente. Desde cualquier cliente que modifique el pedido solo ve lo que el ha modificado pero no le salta la alerta si el servidor u otro cliente modifica el pedido. Lo ve cuando refresca. Espero haberme explicado bien.
Y este problema me pasa con firedac e interbase. No se si con otro componente lo puedo sincronizar en ambas partes
Tambien habia pensado hacer un timer e ir actualizando cada x tiempo pero me parece poco eficiente.

gracias

Casimiro Notevi 14-08-2022 22:13:23

Pero ese aviso de que se ha modificado un pedido ¿cómo se hace? ¿se envían mensajes avisando que el pedido xxx, y el pedido yyy, y el pedido zzz ha sido editados?
¿Alguna opción para consultar pedidos editados?
A lo mejor te interesa simplemente poner un aviso de "hay pedidos editados" y entrar en una opción donde liste esos pedidos.

carlomagno 16-08-2022 15:27:04

Cita:

Empezado por Casimiro Notevi (Mensaje 547945)
Pero ese aviso de que se ha modificado un pedido ¿cómo se hace? ¿se envían mensajes avisando que el pedido xxx, y el pedido yyy, y el pedido zzz ha sido editados?
¿Alguna opción para consultar pedidos editados?
A lo mejor te interesa simplemente poner un aviso de "hay pedidos editados" y entrar en una opción donde liste esos pedidos.

El aviso lo deberia hacer el evento al hacer commit en el update de las lineas del pedido. Este post lanza un trigger que inicia la alerta. Todo eso lo hace bien con el prog que se ejecuta en el servido de bd pero cuando es un cliente con otra ip externa la alarma no se ejecuta y solo veo las modificaciones cuando el cliente refresca la bd. Para lo que dices tendria que refrescar igualmente (es lo que hago actualmente...)

gracias por la ayuda

Casimiro Notevi 16-08-2022 16:09:26

Mira esto.

carlomagno 17-08-2022 19:03:39

Cita:

Empezado por Casimiro Notevi (Mensaje 547951)
Mira esto.

gracias por la info. No la habia encontrado y mira que he buscado por google.
La cosa es que yo utilizo interbase y no encuentro la forma de indicarle un puerto auxiliar para eventos.
La verdad es que estoy encallado...

Casimiro Notevi 17-08-2022 20:51:28

Cita:

Empezado por carlomagno (Mensaje 547974)
...La cosa es que yo utilizo interbase...

Para este tema es lo mismo interbase que firebird.

carlomagno 18-08-2022 17:02:12

Cita:

Empezado por Casimiro Notevi (Mensaje 547975)
Para este tema es lo mismo interbase que firebird.

como puedo configurar un puerto auxiliar con interbase? no veo ninguna opcion en su fichero de configuracion y no encuentro documentacion sobre el tema en internet...

gracias

Casimiro Notevi 18-08-2022 18:31:24

Cita:

Empezado por carlomagno (Mensaje 547983)
como puedo configurar un puerto auxiliar con interbase? no veo ninguna opcion en su fichero de configuracion y no encuentro documentacion sobre el tema en internet...gracias

Pues aquí:
Cita:

Empezado por Casimiro Notevi (Mensaje 547951)
Mira esto.


Casimiro Notevi 19-08-2022 12:11:09

Aquí tienes un ejemplo práctico, a ver si te viene bien.

carlomagno 19-08-2022 17:52:00

Hola Casimiro

si ya lo tengo funcionando, y funciona bien. Supongo que el problema que tengo es el tema del firewall y de que no se como decirle a interbase que apunte a un puerto auxiliar para que los eventos pasen por ahi. De momento los veo cuando estoy en el servidor.
Estoy buscando dentro de interbase a ver si consigo hacer el puente hacia un puerto y asi abrir ese puerto en todos los clientes...

De todas formas gracias por la ayuda

ASAPLTDA 23-08-2022 00:05:59

Puerto Auxiliar Firebird Eventos
 
para firebird 3. revisa C:\Program Files (x86)\Firebird\Firebird_3_0\firebird.conf

#
# The TCP Port Number to be used for server Event Notification
# messages. The value of 0 (Zero) means that the server will choose
# a port number randomly.
#
# Per-connection configurable.
#
# Type: integer
#
#RemoteAuxPort = 0

carlomagno 03-09-2022 11:54:49

Cita:

Empezado por ASAPLTDA (Mensaje 548017)
para firebird 3. revisa C:\Program Files (x86)\Firebird\Firebird_3_0\firebird.conf

#
# The TCP Port Number to be used for server Event Notification
# messages. The value of 0 (Zero) means that the server will choose
# a port number randomly.
#
# Per-connection configurable.
#
# Type: integer
#
#RemoteAuxPort = 0


y alguien sabe como hacer con interbase?

Casimiro Notevi 03-09-2022 12:20:24

Cita:

Empezado por carlomagno (Mensaje 548181)
y alguien sabe como hacer con interbase?

¿No tiene fichero de configuración?


La franja horaria es GMT +2. Ahora son las 10:15:19.

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