Sistema de Tickets con base de datos Firebird
Saludos, deseo hacer un sistema de tickets usando una base de datos en firebird, tengo una duda, como podria saber que se realizo un nuevo registro en la base de datos en las maquinas clientes? hay algun componente para eso? gracias.
|
Podrias investigar sobre eventos
PD: No das informacion suficiente |
Hola.
Así a groso modo, podrías guardar en una tabla temporal el número de registro de la tabla tickets y comprobar cada X tiempo si hay algún registro más. |
Post_Event
En mis tiempos usaba una funcionalidad e InterBase (y tambiend e Firebird) que es el post_event combinada con un componente TIBEvent.
Aqui hay info viejita (aun dice borland) pero creo que igual de válida en nuestros dias. http://www.devgear.co.kr/pdf/ib_events.pdf |
Para Firebird es igual, pero usa mejor su PDF: http://www.firebirdsql.org/file/docu...ird_events.pdf
Tiene sus límites, así que no abuses de él. Ten en cuenta que en "cualquier inesperado momento puede llegar ese evento", imagina que el usuario está modificando un registro, llega el evento y ordenas cerrar consultas y abrirlas de nuevo para refrescar... Ups! se perdió la modificación que estaba realizando... Quizás mejor un botón de "refrescar datos", o que el evento solo sea para cambiar el color del botón "refrescar datos" (poniendo otro icono). Así el usuario sabe que hay nuevos datos y decide pulsar o no. |
Cita:
Eso se puede solucionar facilmente, basicamente si el DataSet esta en edicion no refrescas la consulta |
Un TIBEventAlert, solo puede registrar 15 eventos como máximo. Además es asíncrono y te da un contador con las "repeticiones que ha habido".
Cita:
Debes tener en cuenta que ese evento puede llegar en cualquier momento. La complicación en la programación no justifica la necesidad de refrescar los datos automáticamente, a menos que sea un sistema "en tiempo real" Es más, imagina que no estás en edición, y llegan 10 eventos, uno por tabla, en sistemas multiusuarios, multiplica por 10 puestos; ¿actualizas todos los datos de tus 10 terminales? puede que el usuario esté usando el Word. ¿Y si está mirando un listado de tickets por fechas y éste no para de actualizarse en pantalla? Lo normal es que inicies una transacción y el listado que estás mirando sea estático, en el momento que pediste los datos. Una inserción en la tabla clientes no es importante. Una inserción en la tabla ChatEntreUsuarios sí lo es. A eso me refería con "no abusar de los eventos". Pero vamos, igual me estoy poniendo en casos de uso que no se van a dar... Saludos |
Cita:
|
Gracias por la aclaracion, sin duda de acuerdo
Nunca he trabajado con eventos ni con componentes como los TIBxxx, es mas que nada la teoria lo que tengo presente Por otro lado mi forma de trabajar usando objetos y no el el combo controles data aware + dataset; prefiero usar los controles tradicionales y mantener la info en memoria (objetos) y luego enviar los datos cuando se pulsa "aceptar" De este modo quiza sea "mas codigo" hacer algunas cosas pero no tengo problemas tales como "cerre el dataset y ups perdi los datos" En los casos que describes como "una insercion en la tabla ChatEntreUsuarios", podria capturar ese evento y en lugar de refrescar autmaticamente como decis, podria poner un cartel de que "hay nuevas ... bla bla". Por ejemplo el propio ClubDelphi lo hace de esta manera :) |
La franja horaria es GMT +2. Ahora son las 03:00:32. |
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