![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#6
|
||||
|
||||
|
Cita:
El "pooling" no es más que lo que ha comentado [Casimiro]. Ir preguntando periódicamente por el estado de algo para saber si ha sufrido cambios (en este caso los cambios en la tabla). La implementación con un Timer o con un thread separado. Lo que si considero importante es, que si la tabla de la que quieres refrescar el Grid es muy grande, no pregunte directamente a la tabla (refrescando el grid), sino que lo hagas con una tabla secundaria (pequeña y de acceso rápido). Por ejemplo, si tienes una tabla de OPERACIONES que visualizas en un grid y quieres mantenerla actualizada, pero es grande, te creas una segunda tabla pequeña con esta estructura: HAY_CAMBIOS_OPERACIONES ------------------------------------- ID; Autonumerico;NOT NULL ULTIMOCAMBIO; FechaHora; NOT NULL 1) Cuando hay un cambio en la tabla de operaciones, haces un INSERT en la tabla HAY_CAMBIOS_OPERACIONES 2) El pooling o el Timer hace la consulta sobre la tabla HAY_CAMBIOS_OPERACIONES, en lugar de sobre la tabla de OPERACIONES (esto sale a cuenta si la tabla de OPERACIONES es pesada/grande y las consultas costosas) a) Si la tabla HAY_CAMBIOS_OPERACIONES tiene registro, actualizas el GRID y borras ese registro b) Si la tabla HAY_CAMBIOS_OPERACIONES NO tiene registros es que no habido cambios y no hay que hacer nada más. Lo dicho, esta tabla HAY_CAMBIOS_OPERACIONES sale a cuenta mantenerla si la tabla OPERACIONES es grande y no quieres estar continuamente generando esas consultas costosas. Si la taba original (OPERACIONES) es pequeña o la consulta se hace con filtros y no es costosa, esta técnica de usar una segunda tabla no es necesaria. Esta es la idea simple, hay variantes, como que la tabla HAY_CAMBIOS_OPERACIONES, sea más genérica y te pueda servir para más tablas. En este caso el TimeStamp no haría falta estrictamente, sólo que exista registro, etc, etc, etc,... (el ejemplo es simple y rápido para explicar la idea, no es una implementación final). Espero que la idea se haya entendido.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| MSACCESS WHERE con LIKE y Delphi7 con ADO | saldanaluis | Conexión con bases de datos | 2 | 11-11-2010 05:58:55 |
| Notificación de Cambios | marcial | Firebird e Interbase | 8 | 18-11-2008 20:58:02 |
| Tumbar msaccess | Luis F. Orjuela | Conexión con bases de datos | 1 | 05-04-2007 11:05:19 |
| MSAccess o SQL Server | Cabanyaler | Conexión con bases de datos | 3 | 17-08-2005 14:55:04 |
| objeto ole MSACCESS | veronica | Gráficos | 1 | 19-11-2004 16:07:22 |
|