Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Redes
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Error al conectar Firebird en red

Primero que nada decir que pongo esta pregunta aquí porque creo que es donde debe ir. Si los administradores consideran más correcto situarla en otro sitio, adelante.

Hace tiempo pedí ayuda para poder conectar una aplicación hecha en BCB 6 a una base de datos Firebird en red. Me distéis una solución en aquel hilo (Conectar Firebird en red). Voy a explicar lo que estoy haciendo en el programa para conectar a la BB.DD.
1. Los valores de la ruta deacceso los guardo en un fichero ini con estos valores:
Cita:
[DATOS]
Entorno=\\JUANI\DatAfi30
Tablas=JUANI/3050:C:\DatAfi30\Tablas
Seguridad=C:\Users\Usuario\Documents\Copia Seguridad
y lo leo, sobre las variables previamente definidas tipo char, con la típica instrucción:
Código:
GetPrivateProfileString("DATOS", "Entorno"  , "C:\\DatAfi30\\"      , cEntorno  , sizeof(cEntorno)  , (ExtractFilePath(Application->ExeName) + "PtoDat30.ini").c_str());
GetPrivateProfileString("DATOS", "Tablas"   , "C:\\DatAfi30\\Tablas", cTablas   , sizeof(cTablas)   , (ExtractFilePath(Application->ExeName) + "PtoDat30.ini").c_str());
GetPrivateProfileString("DATOS", "Seguridad", ""                    , cSeguridad, sizeof(cSeguridad), (ExtractFilePath(Application->ExeName) + "PtoDat30.ini").c_str());
Esto he comprobado que lo hace bien y que los valores que recupera son los que están garabados.
2. Asigno el nombre de la BB.DD. en el elemento TIBDatabase.
Código:
fMenu->GesInt->DatabaseName = AnsiString(cTablas) + "GesInt.fdb";
3. Verifico que la base de datos existe:
Código:
bool TInicio::CreaDb()
{
     try
     {
          if (FileExists(AnsiString(cTablas) + "GesInt.fdb"))
               return true;
               
          fForBln->IniBarra("Creando base de datos");
          fMenu->Auxiliar->Transaction->Active = false;
          fMenu->Query->Transaction->Active    = false;
          fMenu->GesInt->Connected             = false;
          fMenu->GesInt->DatabaseName          = AnsiString(cTablas) + "GesInt.fdb";
          fMenu->GesInt->SQLDialect            = 3;
          fMenu->GesInt->Params->Clear();
          fMenu->GesInt->Params->Add("USER 'sysdba'");
          fMenu->GesInt->Params->Add("PASSWORD 'masterkey'");
          fMenu->GesInt->Params->Add("PAGE_SIZE 4096");
          fMenu->GesInt->Params->Add("DEFAULT CHARACTER SET ISO8859_1 COLLATION ES_ES_CI_AI");
          fMenu->GesInt->CreateDatabase();
     }
     catch(Exception &Exc)
     {
          return false;
     }
     return true;
}
Y aquí es donde esta el problema porque al ejecutar el FileExists la aplicación le responde que no existe y trata de ejecutar la creación de dicha BB.DD. en las líneas siguientes, pero como ya existe lógicamente da error.

Hemos comprobado que el puerto 3050 está abierto en ambas máquinas y en desde el equipo cliente se puede ver en el explorador de Windows la BB.DD. en el servidor. He estado mirando cosas por la red sobre conexión de Firebird en red y todas las soluciones apuntan a las sugerencias del hilo que citaba antes.

¿Podéis darme una pista de qué puedo hacer para solucionar este problema?
Responder Con Cita
  #2  
Antiguo 23-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Para probar he cambiado el punto de ejecución de ese FileExists al punto justo anterior al que llama a esa función y sigue dando el mismo error.
Responder Con Cita
  #3  
Antiguo 23-02-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si Tablas es: C:\\DatAfi30\\Tablas
Y haces fMenu->GesInt->DatabaseName = AnsiString(cTablas) + "GesInt.fdb";
Entonces obtienes: C:\\DatAfi30\\TablasGesInt.fdb
Responder Con Cita
  #4  
Antiguo 23-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si Tablas es: C:\\DatAfi30\\Tablas
Y haces fMenu->GesInt->DatabaseName = AnsiString(cTablas) + "GesInt.fdb";
Entonces obtienes: C:\\DatAfi30\\TablasGesInt.fdb
No; ese C:\\DatAfi30\\Tablas es el valor por defecto. Además luego de leer el valor del ini le añado la barra final (cTablas[AnsiString(cTablas).Length()] = '\\';); sé que es una tontería, pero al escribir el código se me olvidó incluirla en el fichero ini y lo arreglé así. En este caso sería JUANI/3050:C:\\DatAfi30\\Tablas porque está definido así en el ini. No obstante he estado haciendo unas pruebas en mi máquina simulando que es una red, y le puesto en el ini en vez del valor original una dirección de red que queda así:
Cita:
cTablas = DEPAPEL/3050:C:\\DatAfi31\\Tablas\\
fMenu->GesInt->DatabaseName = AnsiString(cTablas) + "GesInt.fdb";
y he comprobado que incluso haciéndolo en local con esta simulación da el mismo error. Me tiene totalmente descolocado porque hasta ayer por la mañana funcionaba a la perfección y no veo que haya modificado nada para que ocurra esto.
Responder Con Cita
  #5  
Antiguo 23-02-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿"Juani" es un directorio o un alias?
¿Y si pruebas manualmente, conecta?
192.168.1.100:/ruta/bd.fdb
A ver si tienes firebird desactivado, o han instalado un antivirus o algo en el servidor y está cortando el acceso, o firewall...
Responder Con Cita
  #6  
Antiguo 23-02-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿"Juani" es un directorio o un alias?
Es el nombre de la máquina
Cita:
¿Y si pruebas manualmente, conecta?
192.168.1.100:/ruta/bd.fdb
A ver si tienes firebird desactivado, o han instalado un antivirus o algo en el servidor y está cortando el acceso, o firewall...
Hace unas semanas tuvieron problemas porque se estropeó el disco duro del servidor y tuvieron que cambiarlo, pero quedó todo funcionando a la perfección después de abrir los puertos en el cliente y en el servidor.

El problema es que hasta ayer por la mañana se conectaba sin problemas. He seguido haciendo pruebas y me he encontrado que si elimino esa comprobación de si existe la BB.DD. funciona a la perfección y arranca sin problemas.

Si encontrara la forma de hacer un log de depuración con alguna librería o algo me ayudaría muchísimo. Sigo investigando.
Responder Con Cita
Respuesta



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 al conectar app con bd Firebird Tiaguito_Power Conexión con bases de datos 5 28-08-2015 20:46:51
Error al conectar BD Firebird Angel.Matilla Firebird e Interbase 28 13-10-2014 11:30:35
Ayuda con error al conectar a Firebird Mauro® Conexión con bases de datos 9 20-02-2008 20:09:42
Error al conectar Firebird+MDO brakaman Conexión con bases de datos 2 08-04-2007 22:49:10
Error al conectar con un BD de Firebird 1.5 con un BDPConnection tarus .NET 2 06-06-2005 09:09:38


La franja horaria es GMT +2. Ahora son las 18:48:46.


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