Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
 
Registrado: Oct 2010
Posts: 152
Poder: 7
Diego827 Va por buen camino
Actualizar en tiempo Real

Hola amigos, busque por todos lados una solucion a mi problema pero no la haye. Espero que ustede me brinden una mano.

Les comento mi problema:

Quisiera que un DBChart se actualizara en tiempo real; este presenta datos de una base de datos Interbase. Los componentes utilizados son Interbase o bien IBX como le llaman algunos.

La unica forma que he hayado para actualizarlo es cerrando y habriendo el IBDataBase cada cierto tiempo pero no es lo correcto.

Gracias de antemano;
Responder Con Cita
  #2  
Antiguo 19-10-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.498
Poder: 16
Ñuño Martínez Va camino a la fama
En lugar de eliminar y crear el IBDataBase, ¿has probado a desactivar y activar el DataSet?
__________________
Proyectos actuales --> Burdjia Components|http://gesbit.sf.net/
Responder Con Cita
  #3  
Antiguo 19-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
 
Registrado: Oct 2010
Posts: 152
Poder: 7
Diego827 Va por buen camino
Probe con esto

Estimado Ñuño, por lo que comentaste realize esto:

Código Delphi [-]
void __fastcall TForm_vistas::Button1Click(TObject *Sender)
{
IBDataSet_ATR->Active=false;
IBDataSet_ATR->Active=true;
SeriesDataSet_ATR->Active=false;
SeriesDataSet_ATR->Active=true;
DBChart_ATR->Refresh();

}


Pero no funciona, presiono el boton y de cualquier modo el DBChart no actualiza.
Seguire intentando con otras formas que se me ocurran y posteo,

Gracias por contestar.
Responder Con Cita
  #4  
Antiguo 19-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 26.792
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es difícil ayudarte porque no has explicado lo que estás haciendo, de cómo obtienes los datos, cómo los presentas, etc. ni lo que quiere decir para tí "tiempo real".

Si lo que quieres es un gráfico se esté actualizando según los datos que se introducen en una base de datos, entonces NO lo hagas en tiempo real porque estarás saturando la red y el servidor con constantes "selects".
Hay otras formas de hacerlo, pero antes debes explicar qué estás haciendo, qué quiéres hacer, etc. exactamente.
Responder Con Cita
  #5  
Antiguo 19-10-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: May 2003
Ubicación: Campeche, México
Posts: 2.695
Poder: 16
maeyanes Va por buen camino
Hola...

Prueba creando una transacción nueva (y la configuras para que sea de tipo SNAPSHOT) para esos Datasets y haces algo como:

Código Delphi [-]
if IBChartsTransaction.InTransaction then
  IBChartsTransaction.Commit;
IBChartsTransaction.StartTransaction;
IBDataSet_ATR->Active=true;
SeriesDataSet_ATR->Active=true;

Y a IBDataSet_ATR y SeriesDataSet_ATR le asignas la nueva transacción en su propiedad Transaction.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #6  
Antiguo 19-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 26.792
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Está claro que no se tiene claro lo que quiere Diego827, ha recibido 3 respuestas, cada una distinta de la otra.
Responder Con Cita
  #7  
Antiguo 19-10-2011
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: Feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 11
mightydragonlor Va por buen camino
Con IBEvents =P
Edito: Ya van cuatro casimiro xD
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #8  
Antiguo 19-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 26.792
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mightydragonlor Ver Mensaje
Edito: Ya van cuatro casimiro xD
Y sumando...
Responder Con Cita
  #9  
Antiguo 20-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
 
Registrado: Oct 2010
Posts: 152
Poder: 7
Diego827 Va por buen camino
Hola amigos.

Gracias por sus respuestas! sabia que me iban a ayudar (de hecho siempre recibo ayuda de este club!).

Ok, estimado Casimirio; explico el problema con más detalle.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
no has explicado lo que estás haciendo.
Es que no lo he hecho... Quisiera hacerlo pero no me sale ; lo que de igual forma significaria lo estoy intentando hacer.

Como dije antes: "Quisiera que un DBChart se actualizara en tiempo real; este presenta datos de una base de datos Interbase. Los componentes utilizados son Interbase o bien IBX como le llaman algunos". Añadiría: lo que trato de hacer es una ventana con un DBChart; el cual muestra datos de un campo en una base de datos InterBase SMP 2009. Si se ingresaran datos inmediatamente que cambiara el DBCHart, algo asi como si este "pendiente de cambios" y actualizarce en cuanto sucedan. Esto, si fuera posible.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
de cómo obtienes los datos
Los obtengo por componentes IBX, como dije: "Los componentes utilizados son Interbase o bien IBX como le llaman algunos."; pero cabería añadir: Para conectarme a la base un TIBDataBase, un IBTransaction... lo que se utiliza normalmente y por supuesto el IBDataSet.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
cómo los presentas
Los presento en un DBChart, como dije: "Quisiera que un DBChart se actualizara en..."; no utilizo ningun DBGrid ni nada parecido, es una ventana simple con un DBChart. Lo que sucede es que no se como hacer que el Componente IBDataSet se de cuenta que la base de datos ha tenido una modificacion o algun cambio y por lo tanto volver a consultar y obtener los nuevos datos.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
ni lo que quiere decir para tí "tiempo real
Para mi tiempo real (y para Wikipedia y otras Web) es algo como: un sistema que esta pendiente de lo que suceda y que presenta datos del ahora; por ejemplo si se ve la memoria de acceso aleatorio consumida de tu PC en este momento el dato es de tiempo real (no de ayer en el administrador de tareas).

Resumiendo :

Un grafico DBChart (digamos que de linea) que este mostrando los datos actuales que se presentan en la base de datos (por supuesto especificamente de un campo) y que al cambiar estos datos (ya sea una edicion o un insert) este grafico se actualics. No se si exista alguna funcion que detecte cambios en la base de datos y que al cambiar inmediatamente se actualice. Estoy de acuerdo con lo que mencionas estimado Casimiro; si hago sentencias SELECT cada cierto tiempo con un Timer estaria hasta cierto punto siendo desconsiderado con los recursos.

Estimado maeyanes; lo pruebo y posteo, de igual forma voy a probar lo que me dices estimado mightydragonlor; voy a intenarlo.

Saludos a todos y gracias por responder.
Responder Con Cita
  #10  
Antiguo 20-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 26.792
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces te viene mejor los eventos, que cuando se actualice ese campo (o la tabla) salta el evento oportuno y tú te encargarías de presentar la gráfica con los nuevos datos, así sólo tendrías que hacerlo cuando realmente se han modificado los datos.
Creo que en algún hilo había un ejemplo que te puede venir perfecto, voy a ver si lo encuentro, aunque tampoco es muy complejo.

Edito: busca por post_event, también por el componente indicado por mightydragonlor, para manejarlo desde delphi.

Aquí hay un hilo que te puede servir.

Última edición por Casimiro Notevi fecha: 20-10-2011 a las 00:58:08.
Responder Con Cita
  #11  
Antiguo 20-10-2011
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: Oct 2004
Posts: 1.510
Poder: 14
RONPABLO Va por buen camino
Como te han comentado usa los eventos, es un componente IBX, se llama IBEvente...

Cita:
Un grafico DBChart (digamos que de linea) que este mostrando los datos actuales que se presentan en la base de datos (por supuesto especificamente de un campo) y que al cambiar estos datos (ya sea una edicion o un insert)
1. Ok en la base de datos debe crear un trigger en la tabla que tiene dicho campo, es importante determinar que es lo que esta graficando, los cambios realizados por un update, inserciones nuevas con un Insert o información que se borra con un Delete, así pues al crear el trigger ponemos que se active en una de estas opciones o en todas o en las 2 que necesite.

2. El código del trigger lucirá algo así:

Código SQL [-]

SET TERM ^^ ;
CREATE TRIGGER NombreDelTrigger FOR NombreTabla ACTIVE AFTER INSERT POSITION 0 AS
begin
  /* code */
  POST_EVENT 'NuevoRegistro';   // Este es el nombre que yo le di al evento, pero puede ser el que más se adapte o el que quiera poner
end ^^
SET TERM ; ^^

3. Ya volviendo al código del programa y dejando a un lado la base de datos vamos al componete IBEvent, en él usamos la propiedad registrar evento y ahí colocamos el nombre del evento creado en el trigger (el que yo llame 'NUevoRegistro').

4. Acá queda faltando programar el evento del componente IBEvent (suena redundante, y puede ser confuso, pero este no es una propiedad si no un evento, como el onMouseUp o el OnClick), no recuerdo como se llama este evento, pero en el solo necesita poner algo así como esto:

Código Delphi [-]
    DataSet.Refresh;

Nota: Acá todo lo digo de memoria, así que puede haber muchos errores, pero es la idea de como funciona.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #12  
Antiguo 20-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
 
Registrado: Oct 2010
Posts: 152
Poder: 7
Diego827 Va por buen camino
Excelente amigos

Gracias amigos en cuanto lo realice posteo muy agradecido por su tiempo!

Saludos a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cláusula Order by impide actualizar en tiempo real? anghell77 SQL 4 30-10-2006 05:11:39
Video en tiempo real Fitoperu Internet 1 25-08-2005 21:47:07
Videos en tiempo real Albano Internet 4 07-06-2005 22:51:56
Buen Pc en Tiempo Real Rabata Varios 0 19-11-2003 16:48:01
Actualizar En Tiempo Real GIVO SQL 3 21-07-2003 19:10:31


La franja horaria es GMT +2. Ahora son las 23:37:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi