FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Capturar eventos de postgres en delphi
Hola:
Mi pregunta radica en como capturo el evento de inserción de un registro en una tabla, y luego poder saber esto en delphi 7, esto como alternativa, ya que no puedo estar haciendo consultas todo el tiempo a la tabla ya que me imagino que consumiría muchos recursos. Les comento como va el problema. El trabajo es para un grifo, en donde hay un programa que almacena en una tabla en postgres 8.4 el total del combustible atendido, por cada surtidor, Ahora lo que tiene que hacer el programa que estoy haciendo es tomar estos registros ingresados y emitir un comprobante, y que lo haga de la forma mas automatica posible. Por lo cual necesito capturar este evento que se produce en postgres, para realizar la operacion desde delphi. Estoy utilizando UNIDAC para hacer la conexion con postgres, he visto que hay un componente uniAlerter, sera que esto me pueda servir, He visto en otro Hilo que generan un procedimiento almacenado en firebird, y lo capturan con IBEvents, me imagino que se debe hacer de una forma similar. Espero alguien pueda darme un camino a seguir. gracias Última edición por chelard fecha: 28-08-2010 a las 18:52:40. Razón: olvide algunos datos |
#2
|
||||
|
||||
En el componente DataSet que estés usando tendrás todos los eventos habituales, onNewRecord, onBeforePost, OnAfterPost, OnBeginUpdate, etc, ...
|
#3
|
|||
|
|||
Hola Casimiro,
Gracias por contestar. con el evento OnNewRecord del Dataset, es que puedo saber que se inserto un nuevo registro en la tabla?, Es otro programa el que realiza esta insercion, si es asi me puedes dar un pequeño ejemplo. |
#4
|
||||
|
||||
Mejor explica en detalle todo el proceso que realizas y lo que quieres conseguir.
|
#5
|
|||
|
|||
Hola Casimiro:
Tengo una tabla ventas en postgres 8.4 en esta tabla un programa (del cual no tengo codigo fuente), inserta nuevos registros. Lo que yo quiero es desde mi programa, saber si se inserto un nuevo registro, para inmediatamente recuperar este registro, Lo primero que se me ocurrio era leer periodicamente la tabla, pero esto me consumiria muchos recursos. Si necesitas mas datos solo hazmelo saber. Gracias |
#6
|
||||
|
||||
Pues entonces lo tienes complicado, desconozco si existe alguna utilidad para postgresql que haga lo que necesitas, aunque no me extrañaría, la verdad.
|
#7
|
||||
|
||||
Hola Chelard,
efectivamente tienes que utilizar UniAlerter (yo utilizo PgDAC en lugar de UniDAC pero deberían ser similares). Para ello, desde la aplicación cliente debes "escuchar" los eventos asincronos de PostgreSQL (te debes suscribir como cliente) y luego tendrás que generar esos eventos (un trigger -after insert row- de base de datos puede servir). Revisa esta parte del manual de PostgreSQL: http://www.postgresql.org/docs/8.4/s...ql-notify.html (este es el más completo) http://www.postgresql.org/docs/8.4/s...ql-listen.html Jugue con ello hace tiempo, pero no tengo nada en producción, así que seré de poca ayuda a partir de aquí. Suerte. Última edición por yapt fecha: 11-09-2010 a las 17:14:59. Razón: Olvidé los enlaces de la doc. de PosgreSQL |
#8
|
|||
|
|||
http://www.delphiaccess.com/forum/index.php?topic=3135.0
Hola Yapt,
Gracias por responder, en general ya tenia la idea lo que quiero realmente es si alguien me puede dar una pauta, un poco mas practico. en este enlace esta lo que quiero, pero trabaja con firebird, http://www.delphiaccess.com/forum/in...p?topic=3135.0 alguien que tenga unos conocimientos de triggers en postgres creo que lo podria resolver facilmente, desgraciadamente aun no tengo esa habilidad, Espero que este enlace ayude a resolver el tema. Me dice que aun no puedo enviar enlaces, no lei nada al respecto en la guia, en fin puse el enlace en el titulo, espero no cometer ninguna infraccion, solo con el fin de aclarar el post. gracias Última edición por Casimiro Notevi fecha: 11-09-2010 a las 20:31:44. |
#9
|
||||
|
||||
Chelard,
normalmente esto no funciona así. Tienes unas directrices generales, al menos intentalo y vuelve con las dudas concretas que puedas tener. Pero veo que, al menos, eres de los que responden y.... bueno... que aquí va (para referencia futura): En PostGreSQL (8.4):
Y en Delphi. Esto está hecho con los controles de las Devart (PgDAC) que son los que yo tengo licenciados y no con UNIDAC que es el que has comprado tú (tengo la esperanza de que así sea). Delphi: { El formulario.... }
{ El Código.... }
Cuando lo conviertas a UNIDAC, deja aquí los cambios para que sirvan para futuros visitantes. Gracias. |
#10
|
|||
|
|||
Hola Yapt:
Muchisimas gracias por responder, y practicamente lo hiciste todo, mucho mas de lo que esperaba, Si lo intente, desgraciadamente el primer paso era el trigger y ahi es donde me quede, Manos a la obra para pasarlo a Unidac y en seguida posteo los cambios, Vamos te mereces un millon de gracias, me has ahorrado mucho trabajo. Volvere pronto para poner los cambios. |
#11
|
|||
|
|||
Capturando Eventos con Unidac
Hola Yapt:
Muchas gracias nuevamente funciona perfecto. Bueno y como me lo pediste dejo aca el codigo para que funcione con los componentes Unidac. Primeramente el trigger y la BD, igual como tu lo hiciste, el formulario quedo asi
... Y el codigo quedo de esta manera,
|
#12
|
||||
|
||||
Me alegro que haya sido fácil trasladar el código a UNIDAC.
Suerte. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar Eventos de Windows | berna | API de Windows | 4 | 07-10-2008 19:40:52 |
Capturar Eventos del Control Remoto | lachuza | API de Windows | 2 | 05-06-2008 20:36:05 |
capturar eventos de un telefono | fedeloko | API de Windows | 0 | 04-10-2006 01:35:48 |
Capturar eventos de Windows | Carlos G. | C++ Builder | 1 | 19-08-2004 14:22:28 |
Capturar eventos de componentes | vichovi | OOP | 3 | 13-06-2003 19:01:33 |
|