Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2015
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Antes que nada gracias por tomarse el tiempo... tienen razón.., lo que pasa que se enfrasca uno en el problema y de momento no pensé en poner más detalles.., mira la conexión la estoy haciendo desde el cliente. En el servidor solo está la base montada. Van los detalles y lo que además estoy revisando.

Base de datos FireBird 2.1., aplicación desde Delphi 7 con DBExpress. Mi forma de conectarme es a través del archivo aliases.conf, en el escribo la cadena de conexión como lo comenté utilizando un alias para la ruta física de mi base de datos.


Al momento que me quiero conectar en el código solo abro y cierro la propiedad LoadParamsonConnect, para que actualice los parámetros de la conexión que viene en el archivo dbxconection.ini donde le especifico en el parámetro Database su alias correspondiente ("DataBase = Alias") y donde el "Alias" está definido en el archivos aliases.conf y que supongo lo convertirá a la dirección que tiene asignada.

Archivo dbxconnections.ini

Código:
[MiBase]
DriverName=Interbase
Database = BaseR
RoleName=RoleName
User_Name=sysdba
Password=masterkey
ServerCharSet=
SQLDialect=1
ErrorResourceFile=
LocaleCode=0000
BlobSize=-1
CommitRetain=False
WaitOnLocks=True
Interbase TransIsolation=ReadCommited
Trim Char=False

Archivo aliases.conf

Código:
BaseR = SERVIDOR/3050:C:\MIBASE\BASE.MDB

Así hago la conexión a la base al construir el módulo de datos.

Código Delphi [-]
procedure TDMPrincipal.DataModuleCreate(Sender: TObject);
begin
   try
      ConectaBD(BD, BaseR, MiClave);
   .
   .
   .
   except on E:Exception do Begin
         escribelog('Error al crear DMPrincipal: '+E.Message);
      End;
   end;
end;

Código Delphi [-]
Function TDMPrincipal.ConectaBD(BD: TSQLConnection; MiBase: String; MiClave: String): boolean;
begin
  with BD do
    begin
       Connected:= False;
       ConnectionName := MiBase;
       LoadParamsOnConnect:= True;
       try
          Connected := True;
       except on E:Exception do begin
          Connected := False;
          end;
       end;
       LoadParamsOnConnect := False;
       Params.Values['Password']:= Miclave;
       try
          Connected := True;
          Result:= True;
       except on E:Exception do begin
          Connected := False;
          Result:= False;
          end;
       end;
    end;
End;

Cuando depuro, en la función ConectaBD y reviso, trae bien los parámetros pero yo esperaría que convirtiera el Alias "BaseR" por su valor asignado en el aliases.conf, sin embargo toma el valor de "BaseR" como si fuera el nombre de la base de datos y por consiguiente envía error de que no encuentra el archivo para abrirlo. Si yo pongo la ruta y nombre de la base directamente en el parámetro BaseDatos se conecta sin problema o si cambio en el aliases.conf la ruta de la base por una ruta local de mi equipo cliente se conecta bien; es decir supongo yo hace bien la conversión del "Alias" por su valor asignado.

Espero haberme explicado y nuevamente gracias por su apoyo.

Última edición por to_to fecha: 16-06-2015 a las 19:02:23.
Responder Con Cita
  #2  
Antiguo 16-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola to_to.

Siguiendo la sintáxis de mi mensaje anterior y no mediando otros problemas, de este modo tiene que funcionar:
Código Delphi [-]
function TDMPrincipal.ConectaBD(BD: TSQLConnection; const BDName, UsrName, Pwd: string): boolean;
begin
  BD.Close;
  BD.Params.Clear;
  BD.Params.Values['Database'] := BDName;
  BD.Params.Values['User_name']:= UsrName;
  BD.Params.Values['Password'] := Pwd;
  BD.LoginPrompt               := False;
  Result := True;
  try
    BD.Open;
  except
    Result := False;
  end;
end;

Ejemplo de uso:
Código Delphi [-]
begin
  if not ConectaBD(SQLConnection1, '\\TU_NOMBRE_SERVIDOR\TU_ALIAS', 'sysdba', 'masterkey' ) then
    ShowMessage('Error en la conexión');
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 16-06-2015
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Gracias eficsa, así es de esta forma si se conecta. Lo que quería evitar es pasarle directamente la ruta; sino más bien que la tomara del archivo del aliases.conf para no modificar código o meter cosas adicionales, pero bueno es muy válida tu solución.

Me pareció ver una forma de recuperar los aliases que se tienen asignados, haré la prueba de recuperarlos y el valor que traiga el alias de mi base y si no resulta construiré un archivo .ini para guardar ahí la configuración a la base de datos.

Gracias nuevamente, les comento cuando tenga la solución final.
Responder Con Cita
  #4  
Antiguo 16-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola to_to
Cita:
Empezado por to_to Ver Mensaje
Gracias eficsa, así es de esta forma si se conecta. Lo que quería evitar es pasarle directamente la ruta; sino más bien que la tomara del archivo del aliases.conf para no modificar código o meter cosas adicionales, pero bueno es muy válida tu solución.
Es que está tomando la ruta de liases.conf. Lógicamente hay que indicar el servidor y el alias ya que a los que se puede acceder, son virtualmente incontables.

Como ejemplo, teniendo en en aliases.conf: ALIAS = C:\PROGRAMA\DATOS\DATABASE.FDB, fijate que cuando en el cliente usas: \\SERVIDOR\ALIAS el servidor lo convertirá a: C:\PROGRAMA\DATOS\DATABASE.FDB.

Si mas adelante se te ocurriera cambiar la bd a D:\XXXX\DATABASE.FDB, sólo tendrías que cambiar la ruta en archivo aliases.conf del equipo servidor por: ALIAS = D:\XXXX\DATABASE.FDB.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-06-2015 a las 05:19:19.
Responder Con Cita
  #5  
Antiguo 17-06-2015
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Thumbs up

Muchas gracias por los comentarios y sugerencias, efectivamente lo resolví así dejando el alias como lo comentó eficsa y dejando esa parte del servidor como un parámetro ya que esta conexión puede variar. La idea es que se pueda instalar en cualquier cliente y si por alguna razón cambian de servidor o se instala en otra parte la base se pueda configurar desde archivos .ini y/o .conf los accesos a la base sin tocar el código.

Código Delphi [-]
Function TDMPrincipal.ConectaBD(BD: TSQLConnection; CnxBD: String; PwdBD: String): boolean;
{                Agregué variable para recuperar la ruta completa del servidor.
                 Utilicé un archivo "Param.ini" donde se guardarán los datos de
                 conexión, para efectos de la conexión el Alias del servidor y puerto
                 gSERVIDOR y gPUERTOSERVER son variables globales en el datamodule que se crea al 
                 iniciar la aplicación y se recupera el alias y el puerto, si por alguna razón no están o no se pueden
                recuperar se les asigna valores por defecto}
Var
   aliasbd : String;
begin
    aliasbd := '';
    with BD do
    begin
       Connected:= False;
       ConnectionName := CnxBD;
       LoadParamsOnConnect:= True;
       {Se pasa la ruta del alias y el puerto de salida de la base firebird}
       aliasbd := gSERVIDOR+'/'+gPUERTOSERVER+':'+BD.Params.Values['DataBase'];
       try
          Connected := True;
       except on E:Exception do begin
          Connected := False;
          end;
       end;
       LoadParamsOnConnect := False;
       Params.Values['Database']:= aliasbd;
       Params.Values['Password']:= PwdBD;
       try
          Connected := True;
          Result:= True;
       except on E:Exception do begin
          Connected := False;
          Result:= False;
          end;
       end;
    end;
end;
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
error en conexion remota a bd pamda Firebird e Interbase 1 12-11-2014 22:36:23
Ayuda con error en conexión a MySQL remota LucasBols C++ Builder 8 04-06-2012 19:42:35
Error: conexion remota PostgreSQL ioel PostgreSQL 3 28-07-2010 12:17:52
Error de conexión remota a Firebird JosepGA Conexión con bases de datos 2 16-09-2008 16:23:52
dbxconection.conf, dbxdrivers.conf donde estan??? Alex2000 Lazarus, FreePascal, Kylix, etc. 0 14-02-2004 16:26:41


La franja horaria es GMT +2. Ahora son las 19:52:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi