Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manejar mas de una conexion con Paradox (https://www.clubdelphi.com/foros/showthread.php?t=34316)

Coco_jac 04-08-2006 19:20:06

Manejar mas de una conexion con Paradox
 
Hola.
Miren trabajo con Paradox y Delphi 7.0 en mis aplicaciones, eh realizado mis aplicaciones en base al articonocido articulo Paradox en RED. Tengo una duda, mis aplicaciones apuntaban siempre a una ruta especifica, pero ahora me doy con el caso de tener que apuntar a otro lado (mismo servidor). Bueno lo que hize para este caso, es hacer una mini aplicacion que apuntara a al otro destino, genere el EXE, y anadi el EXE a mi aplicacion (shellexecute) principal, cosa que no me gusto, poruque ahora tengo que apuntar a otro lado y no quiero hacer lo mismo.

Recurro a ustedes
Espero sus comentarios.
Gracias anticipadas.

Lepe 04-08-2006 23:34:37

Con tanto "apuntar" no me he enterado de nada. ¿no te basta accesos directos? ¿no te basta cambiar el alias?

Saludos

Coco_jac 05-08-2006 00:59:03

Hola Lepe, mira la configuracion lo tengo en un datamodulo, mira hize una pruaba antes de eso de cambiar el alias en tiempo de ejecucion pero me salia error como si no refrescara la nueva ruta, luego tenia que cerrar y volver a ejecutar para ver recien los cambios, ya que la ruta lo guardo en un INI, y los actualizo ahi mismo. y los vuelvo a leer.
NO se tal vez hice algo incorrecto.

Espero sus comentarios

egostar 05-08-2006 01:46:25

Cita:

Empezado por Coco_jac
Hola Lepe, mira la configuracion lo tengo en un datamodulo, mira hize una pruaba antes de eso de cambiar el alias en tiempo de ejecucion pero me salia error como si no refrescara la nueva ruta, luego tenia que cerrar y volver a ejecutar para ver recien los cambios, ya que la ruta lo guardo en un INI, y los actualizo ahi mismo. y los vuelvo a leer.
NO se tal vez hice algo incorrecto.

Espero sus comentarios

Si estas usando el proceso del articulo "Paradox en Red", estas usando archivos INI con la siguiente estructura

Cita:

[Datos]
RutaRed = \\MOVIL\
RutaLocal = D:\DESARROLLO\SIH\
Ruta = Tables
Ruta PrivateDir = SIHPriv
Ruta net = SIHNet
Servidor = SI

En el DataModule yo uso lo siguiente:

Cita:

rutaRed := readstring ('Datos', 'RutaRed', '');
rutaLocal := readstring ('Datos', 'RutaLocal', '');
servidor := readstring ('Datos', 'Servidor', '');
Si se ejecuta el programa en el mismo servidor uso esto:

Cita:

ruta := rutaLocal + readstring ('Datos', 'Ruta', '');
rutanet := rutaLocal + readstring ('Datos', 'Ruta net', '');
rutaprivate := rutaLocal + readstring ('Datos', 'Ruta PrivateDir', '');
y si se ejecuta desde otra maquina de la red uso esto:

Cita:

ruta := rutaRed + readstring ('Datos', 'Ruta', '');
rutanet := rutaRed + readstring ('Datos', 'Ruta net', '');
rutaprivate := rutaRed + readstring ('Datos', 'Ruta PrivateDir', '');
Entonces cuando creas la sesión ya no importa de que maquina se este ejecutando el programa

Cita:

With Session1 do begin
NetFileDir := rutanet;
PrivateDir := rutaprivate;
End;
Params.Clear;
Params.Add('LOCAL SHARE=FALSE');
Params.Add('PATH=' + RUTA);
Params.Add('DEFAULT DRIVER=PARADOX');
Params.Add('ENABLE SCHEMA CACHE=TRUE');
Params.Add('ENABLE BCD=FALSE');

Además de que no debes de usar la propiedad Alias del DataBase, usas solo la propiedad DriverName = STANDARD

Espero haber entendido tu pregunta y por supuesto contestado de manera explicita.

Saludos.

Lepe 05-08-2006 10:44:57

Cita:

Empezado por egostar
Si se ejecuta el programa en el mismo servidor uso esto:

El servidor tambien debe usar rutas de red, en caso contrario puedes obtener fallos de indices al entrar simultaneamente con el "servidor" y "clientes"


Para el alias, puedes hacerlo en tiempo de ejecución tranquilamente:
Código Delphi [-]
with session do
begin
  if not isAlias('mialias') then
    AddStandardAlias ('Mialias',rutabasedatos,'Paradox' );
  config := cmAll;
  SaveConfig; // guardar de forma persistente el alias. 
// equivale a guardarlo desde el  Bde Administrator
end;
.

Una vez creado el alias, debes asignarselo a todas las tablas y querys que tengas, si le has cambiado el nombre, pues debes actualizarlo:
Código Delphi [-]
  DtbPPal.Session.Open;
  DtbPPal.Connected := True;

    for i := 0 to pred(ComponentCount) do
      if (components[i] is TTable) then
        TTable(components[i]).DatabaseName := Alias
      else if (components[i] is TQuery) then
        TQuery(components[i]).DatabaseName :=Alias;

Yo al menos lo he hecho así, puede que haya otras formas...nu sé.

Saludos


La franja horaria es GMT +2. Ahora son las 08:46:33.

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