Ver Mensaje Individual
  #1  
Antiguo 12-02-2012
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
Paradox en Red

Hola a todos.

Antes de nada, os pido disculpas por volver sobre un tema tan tratado en estos foros.

He estado leyendo muchas y buenas soluciones en los foros. Pero cada caso es particular, y no me dan luz sobre mi problema. Aparte de exigirme importantes cambios en la aplicación ya definida.

Intentaré ser breve:
Disculpad si digo alguna obviedad o barbaridad, pero soy muy novato en esto de las bases de datos.

Tengo un programa con dos bases de datos Maestro/Detalle, originalmente pensado para correr en monopuesto.
La implementación de las bases es manual, con lo que quiero decir que no he utilizado el DataModule.
Tengo dos TTable, dos TDataSource y un TDataBase, no utilizo alias, sino el propio directorio dondo están ubicadas.
Utilizo el siguiente código para abrirlas:

Código Delphi [-]
try
Fclien.database1.Session.NetFileDir:=DirActual;
FClien.ClienDB.DatabaseName:=DirActual;
FClien.ActosDB.DatabaseName:=DirActual;
FClien.ClienDB.Open;
FClien.ActosDB.Open;
except
begin
Application.MessageBox('Error en alguna Base de Datos. Utilice la opción "Reindexar Bases de Datos" del Menú Contextual, '+
                            '( Pulse el botón derecho del ratón en la pantalla principal del programa. )'+#13+
                            'Si ésto no resuelve el problema, póngase en contaco con el Servicio Técnico del programa.',
                            'Mensaje de Error',mb_OK + mb_IconError);
Exit;
end;
end; //try


Ahora necesito correrlo en Red.
No desearía tener que implantar una copia del programa en cada PC, dado que, aparte de las tablas, el programa usa distintos archivos que deben ser comunes a todos los usuarios y que deben estar accesibles en un mismo PC.

Lo he probado en una red local, llamando al programa desde otro PC de la misma red.
Aparentemente se abren los dos programas y funcionan independientemente, pero hay un problema de actualización de datos. Este problema consiste en que las modificaciones que realizo en un PC no aparecen en el otro, a pesar de que tengo puesto en el evento AfterPost:

Código Delphi [-]
ClienDB.FlushBuffers;
ActosDB.FlushBuffers;


He observado que cuando salgo del programa y vuelvo a entrar, los cambios sí están ahí. Llegando a la conclusión de que cuando cierro y abro las bases tengo acceso a las modificaciones realizadas.

Por lo tanto, he incluído en el formulario una bótón para realizar esta labor: cierrra las bases y las vuelve a abrir y así actualizo los datos.

Como entiendo que esto es una auténtica "chapuza", apelo a vuestra buena fe, y vuestros conocimientos, para que me iluminéis con una solución más elegante y práctica. Con los mínimos cambios posibles en el código, pues lo tengo muy repartido en varios formularios.

Anticipadamente os agradezco vuestro tiempo y vuestro esfuerzo.

Última edición por Casimiro Notevi fecha: 12-02-2012 a las 20:54:34.
Responder Con Cita