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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-05-2003
Argaron Argaron is offline
Miembro
 
Registrado: may 2003
Posts: 20
Poder: 0
Argaron Va por buen camino
Unhappy No se ven los cambios a traves de la red??

Hola a todos, tengo una aplicacion en red corriendo bajo interbase, la aplicacion se conecta perfectamente a la base de datos. Mi problema es el siguiente:

Arranco el programa en 2 ordenadores, hago modificaciones en una tabla por ejemplo clientes y hasta que no cierro la aplicacion el otro ordenador no se entera de los cambios en la base de datos. Estoy algo perdido porque no utilizo las actualizaciones en cache. El componente que uso es el ibdataset, con su correspodiente codigo en el insertsql. Para iniciar el alta pongo tablaclientes.insert y para grabar tablaclientes.post. la base de datos la tengo conecta a un ibtransaction. ¿Que me falta para que se actualize automatica la base de datos?. Si arranco la aplicacion 2 veces en el mismo ordenador, donde tengo la base, me pasa lo mismo, asi que no es problema de la red.
¿alguna idea? Grcias por todo.
Responder Con Cita
  #2  
Antiguo 21-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si el tipo de base de datos o conexión lo permite tienes que hacer un Refresh, para que te actualice los datos en el ordenador 2, es decir que en la consulta que estas viendo y tienes 4 registros cuando debiera de haber 5, le aplicas refresh.

Es posible que no soporte refresh, en este caso habría que cerrar y abrir de nuevo la tabla y si es una consulta, ejecutarla de nuevo o usar Requery, si es que te lo permite.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 22-05-2003
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Hola club,

Debe tenerse en cuenta que las operaciones se tramitan por medio de una transaccion y mientras no des un COMMIT a la base de datos,los demas usuarios no veran los cambios.

Aplica un IBTransaction1.COMMITRETAINING;
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #4  
Antiguo 22-05-2003
Argaron Argaron is offline
Miembro
 
Registrado: may 2003
Posts: 20
Poder: 0
Argaron Va por buen camino
Gracias he usado IBTransaction1.COMMITRETAINING;

en el afterinsert y funciona, la base de datos se actualiza automaticamente, pero tengo un problema, si tengo 2 aplicaciones abiertas y en una hago cambios la base de datos si actualiza los cambios pero la otra aplicacion no se entera, es como si tuviera una copia anterior de la base y hasta que no la cierra y la vuelvo arrancar no actualiza no carga los nuevos cambios. ¿Existe una forma de "actulizar" la informacion de la base datos automaticamente en la aplicacion sin tener que cerrarla y arrancarla otra vez y sin cerrar el database y abrilo otra vez?
Responder Con Cita
  #5  
Antiguo 22-05-2003
Iván Iván is offline
Miembro
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 118
Poder: 21
Iván Va por buen camino
Esta es la pregunta del millón

Veamos, hay formas de hacerlo, y todas tienen sus problemas.

Una de ella es a traves del uso de Eventos.

Tras hacer una inserción/modificación/eliminación, haces saltar un evento de IB, que lo notificará al resto de conexiones existentes. Así todas las aplicaciones se enteraran de que se ha producido el evento, y podrías hacer a la segunda aplicación, refrescarse para tener los nuevos datos actualizados.

Esa es una posible solución.

Pero otra por ejemplo, es no actualizar, y confiar en las reglas de integridad referencial de la BD. En el momento en que tu intentes hacer una inserción, si repites el registro... te tiene que dar error. Si intentas modificar el mismo registro, dependerá de como lo hayas configurado que actue de una forma u otra, y a la hora de hacer consultas, antes de hacerlas refresca y verás el último estado.

Pero la solución dependerá de tus necesidades reales.

Un saludo.
__________________
Di amigo, y entra...
Guía de estilos de los foros

Visita www.mundobd.com
Responder Con Cita
  #6  
Antiguo 22-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Argaron
¿Existe una forma de "actulizar" la informacion de la base datos automaticamente en la aplicacion sin tener que cerrarla y arrancarla otra vez y sin cerrar el database y abrilo otra vez?
hace unos días se trato el tema en otro hilo del foro ...

http://www.clubdelphi.com/foros/show...=&threadid=577

Saludos.
Responder Con Cita
  #7  
Antiguo 22-05-2003
Argaron Argaron is offline
Miembro
 
Registrado: may 2003
Posts: 20
Poder: 0
Argaron Va por buen camino
Gracias por contestar, pero una pregunta, cuando dices refrescar te refieres a ¿realizar otra vez el select?. Te cuento yo tengo un formulario cliente en mdi, cada vez que lo abro hago un SELECT * FROM CLIENTES, con lo que se supone que tendria que obtener los nuevos datos que se hayan metido en la base de datos no? pero en cambio me muestra solo los datos que tenia cuando arranque la aplicacion.
Responder Con Cita
  #8  
Antiguo 22-05-2003
Iván Iván is offline
Miembro
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 118
Poder: 21
Iván Va por buen camino
Eso te pasa porque aunque cada vez haces un nuevo select, debes estar siempre en la misma transacción.

O no llevas el control de transacciones tú, o tienes que refrescar la vista de la transacción antes de hacer el select.

Saludos.
__________________
Di amigo, y entra...
Guía de estilos de los foros

Visita www.mundobd.com
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 04:28:10.


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
Copyright 1996-2007 Club Delphi