Ver Mensaje Individual
  #2  
Antiguo 06-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Lo veo todo perfecto, pero tento una duda:

Código Delphi [-]
carpeta:=DBGetPathAlias(nombre); //ruta del servidor.

Carpeta debe estar definido como \\nombreservidor\unidad\carpeta, si es así, DirectoryExist encontrará la carpeta y entonces el LocalShare no quedará configurado.

Si Carpeta está definida como c:\bla blah, el BDE no trabajará bien en red.

Una opción es guardar en el archivo de configuración si ese es el servidor o no. Cuando vayas a hacer el instalador, pues haces 2 copias del archivo, uno como servidor y otro como Cliente y según la instalación copias uno u otro.

En cuanto al error que dices, parece que va por otro lado. Se supone (por el error que dá) que es una tabla que forma una relación Master-Detail con otra tabla, y en ese caso, primero tienes que abrir la tabla Maestra y despues la de detalle, siempre en ese orden.

No veo que abras la Session y conectes el TDatabase por ningún lado, supongo que para no alargar mucho el código, como sabes, ambos deben abrirse antes de abrir una tabla. Además si están abiertos en tiempo de diseño, al ejecutarse el programa te dará errores, tienes que tener ese detalle en cuenta y desconectar el TDatabase y cerrar la Session en tiempo de diseño, al ejecutarlo lo conectas por código.

En cuanto a Windows XP /98 solo he detectado un pequeño problema que el propio Windows lo dice al compartir la carpeta de la Base de Datos. Windows 98 no puede conectarse a un recurso de red que tenga más de 12 carácteres o espacios en blanco en su nombre (con el código que has puesto no sé como lo tienes, lo comento por si acaso ).

Un detalle más. En caso de que el alias no esté definido, tambien puede darte errores, puedes subsanarlo así:
Código Delphi [-]
if not Session.IsAlias(fprincipal.nombreAlias) then
begin
  Session.Config := cmAll;
  Session.AddStandardAlias(fprincipal.nombreAlias, 'ruta de la base de datos');
  Session.SaveConfig; // guardar el alias en windows.
end;

Saludos, da gusto ver cómo la gente hace los deberes (muy currado el código)
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita