Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Una lo ve, pero la otra no

Hola a todos los amigos el foro

Inicie este nuevo hilo para presentar una duda que se ha convertido en un problema. Tengo dos aplicaciones hechas en Delphi que sirven para administrar una base de datos en Acces o mejor Microsoft Jetl Ole 4.0. Utilizo TAdoConection y TAdoTable para comunicarme con las tablas. La primer aplicación es con la cual inserto, edito, elimino, consulto, etc. los datos de la base de datos. Con una segunda aplicacion (hecha tambien en Delphi) tiene como objetivo realizar los reportes para la misma base de datos, en su diseño utilicé RaveReport que viene con delphi 7. Cuando inicio las dos aplicaciones, las dos muestran en sus Grillas los mismos datos, pero aqui viene el problema: Si inserto, edito, o modifico cualquier dato con la primera aplicación (con la unica que se puede hacer esto), la segunda (que se encarga de los reportes) no ve esos cambios sino hasta que la cierro y la vuelvo a iniciar. Esto tambien ocurre cuando ejecuto dos veces la primer aplicacion, si trabajo con una de ellas, la segunda no ve los cambios a pesar que se comunican con la misma base de datos. Debo aclarar que no trabajo en red y todo es en el mismo ordenador.

¿Como puedo hacer para que los cambios en el contenido de la base de datos se acutalize en todas las aplicaciones que se conectan con la misma base de datos?

Desde ya gracias, y espero que se entienda lo que estoy planteando. Perdon si es muy largo, no encontre otra forma de resumirlo.
Responder Con Cita
  #2  
Antiguo 02-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola casacham
Simplemente abriendo y cerrando la base de datos en el segundo programa.
Código Delphi [-]
AdoTable1.close;
AdoTable1.open;
Esto lo pones en un boton de actualizar y ya.
Hay otra forma que uso con algun programa, para evitar que se olvide de actualizar, inserto un timer y lo hago por tiempo, normalmente 30 minutos.
Saludos
Responder Con Cita
  #3  
Antiguo 02-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Ya lo habia intentado

Hola Caral
Agradezco con la prontitud que respondiste. Te cuento que la solucion que me propones lo habia pensado y lo hice, pero lamentablemente no me dio resultado, por eso inicie este hilo. Voy a volver a analizar las aplicaciones y hacer que funcione lo que me propones. Aparte la idea del timer esta muy buena. Tal vez mañana emita el mensaje de como me fue a traves de este hilo porque ahora no puedo probar esto. Desde ya muchisimas gracias.
Responder Con Cita
  #4  
Antiguo 02-06-2007
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Hola casacham,

De nuevo te comento que no he trabajado con estos componentes ADO, pero puedo decirte que si la actualizacióon o actualizacion de los datos no te sirvio como te dijo Caral, lo que debe suceder es que no se han "aceptado los cambios" en la base de datos, esto es no se ha hecho COMMIT...

Recuerda que los componentes que se enlazan a una conexión pueden no tener un AUTO-COMMIT y deban esperar a que se le indique a la aplicación explicitamente que "acepte los datos" o en último caso se aceptan cuando el componente se cierra o destruye...

No tengo un Delphi a la mano , por lo que no pedo investigar las propiedades de los componentes, pero debe haber una forma de hacer autocommit en los componentes...

Solo como por probar, mientras alguien mas te ayuda, puedes intentar refrescar la tabla pero de la aplicacion uno (donde guardas los datos).

AdoTable1.close;
AdoTable1.open;

Y... como te dije en otro hilo, te recomiendo no utilizar los componetes TTable, sino los TQuery...

Un saludo

Responder Con Cita
  #5  
Antiguo 02-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Escrito por: gatosoft
Y... como te dije en otro hilo, te recomiendo no utilizar los componetes TTable, sino los TQuery...
Aqui hay que tener en cuenta una cosa (Base de datos Access).
Los componentes TTable o TQuery, trabajan en base a un alias, esto quiere decir que si quieres pasar tu aplicacion a otro ordenador, tendras que instalar algunos programas adicionales y posiblemente con inosetup.
Por el contrario los componentes Ado, trabajan directo sobre la base de datos, no necesitaras nada adicional.
Bueno es solo un comentario.
Saludos
Responder Con Cita
  #6  
Antiguo 02-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Caral siempre tiene razon

Hola Caral
Bueno, debo contar en el foro que finalmente la solucion que me propones funcionó. No se como ni donde era que estaba el error. Pero puedo decir con seguridad ahora que el procedimiento para que otra aplicacion pueda ver las actualizaciones de una tabla de Jet 4.0 lo que se debe hacer es
AdoTable1.Close; seguido de AdoTable1.Open en un procedimiento de boton o en un Timer, el mio quedo asi: donde DM_BD = TDataModule y T_PCTE_ = TAdoTable


Código Delphi [-]procedure TF_PrinReport.SpeedButton2Click(Sender: TObject);
begin
DM_BD.T_PCTE_.Close;
DM_BD.T_PCTE_.Open;
end;




Probe de hacer lo mismo con el TAdoConection y no surte ningun efecto, es con la tabla

Gracias a todos por responder. La otra verdad es que tengo que aprender urgente a manejarme con InterBase.
Responder Con Cita
  #7  
Antiguo 03-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Escrito por casacham:
tengo que aprender urgente a manejarme con InterBase
Me he quedado colgado, por que ? , es que piensas emigrar a interbase ?
Me parece que si quieres dar un salto seria mejor o mysql , que es mas similar a access o ya el otro extremo, firebird , que es muy bueno (segun los comentarios).
Saludos
Responder Con Cita
  #8  
Antiguo 03-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Hola Caral

La verdad es que estuve leyendo sobre Firebird y me parece un poco complicado, esto es porque no conozco como se hacen las tablas. Tampoco es que soy un ignorante total, sino que veo que se hacen a traves de SQL y si bien no es una rareza para mi; lo que cuesta es tener que dejar las comodidades de los sistemas como Acces, en los cuales colocas los campos, les das los tipos con apenas unos clicks, creas las interrelaciones con las tablas arrastrando campos y esas cosas que ya ni debes utilizar. Podras ver que es cuestion de tiempo, ganas no me faltan. Me he bajado todo lo relacionado a FireBird e Interbase, es mas tengo una aplicacion que tal vez la conozcas EMS SQL Manager 2005 for InterBase & Firebird sirve para administrar y diseñar tablas para Firebird e Interbase. Tambien estuve leyendo el manual de Alfonso Ricaño Bringas (rinconcito de delphi) en www.interbase.com.mx y otros manuales que he conseguido de diversos sitios. Otro punto es que he visto muchas discuciones por cual es mejor, si FireBird e InterBase, y como este ultimo viene con delphi, pense en aprender este antes que Firebird, ya que creo que son similares en definitiva (ciertos aspectos comunes, nada mas). Gracias por la respuestas de 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
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla taru MySQL 1 27-07-2006 15:36:12
En red pero no se ven Mariana Redes 3 04-03-2005 07:23:07
...bueno pero no te enojes... Jure Humor 0 12-11-2004 16:11:00
Si En 98 Pero No En Xp sampras Windows 0 20-09-2003 19:45:11
He buscado pero... tcp_ip_es Conexión con bases de datos 1 26-08-2003 13:01:20


La franja horaria es GMT +2. Ahora son las 05:58:11.


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