Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Levantar Proyecto Pascal - Borland Delphi 7 y Componentes (https://www.clubdelphi.com/foros/showthread.php?t=96560)

delphi001 10-01-2024 06:31:31

Levantar Proyecto Pascal - Borland Delphi 7 y Componentes
 
Hola a todos, espero sea un apartado correcto dentro del foro para publicar el tema.

Resulta que en mi emocionante viaje como programador novato, me aventuré en el vasto mundo de Pascal. Mi tarea actual: levantar un proyecto existente el cual cuenta con formularios (entre muchos otros componentes) en Pascal utilizando Delphi 7, junto con una intrigante serie de componentes. Pero aquí está el desafío: ¡una base de datos en Firebird 2.0! Mis primeros pasos fueron como los de un explorador en tierras desconocidas. Con cada problema que surgía al intentar levantar el proyecto, surgían preguntas. Sin embargo, con la magia de Internet y la ayuda de foros devotos, he superado obstáculos. Ahora, me encuentro en un nuevo dilema, uno que me tiene perplejo: ¿cómo identificar la conexión de Pascal con Firebird? ¿Cómo cambio esas enigmáticas cadenas de conexión? Me encuentro en la encrucijada de mi viaje y apelo a la comunidad. ¿Alguna alma amable puede señalarme hacia una URL / Manual que ilumine mi camino y me guíe en la identificación de componentes de conexión a bases de datos?

¡Vuestra ayuda será mi faro en esta travesía!

Casimiro Notevi 10-01-2024 09:52:26

Hola, da pocas pistas (ninguna), deberías poner algo de código, o nombres, o algo.
De todas formas, los más habituales son los IBX que vienen con el propio delphi en la pestaña Interbase.

Puede que tengas otros, pero mejor que nos des más información.
Por cierto, bienvenido a clubdelphi.

Neftali [Germán.Estévez] 10-01-2024 13:03:44

Cita:

Empezado por delphi001 (Mensaje 553943)
¿cómo identificar la conexión de Pascal con Firebird?
¿Cómo cambio esas enigmáticas cadenas de conexión?

No se si te refieres a buscarlos manualmente o a buscarlos de forma automática.
Lo primero y primordial es saber si estás utilizando 1 o varios frameworks de conexión y cuales son:
* BDE
* ADO
* IBExpress
* FIBPlus
* ....

Si es uno nos centramos ese ese, si son varios nos centramos en ellos.

Lo digo porque dependiendo del framework (grupo de componentes) es posible conectarse con:
* Un componente de conexión del tipo TADOConnection, TConnection, TDatabase, ...
* También con un derivado de TDataset (TADOQuery o TADOTable por poner un ejemplo) utilizando una cadena de conexión.

Osea que lo primero es aclarar eso.
Si no sabes cómo, dilo.

Delphi01 11-01-2024 01:43:40

Cita:

Empezado por delphi001 (Mensaje 553943)
Hola a todos, espero sea un apartado correcto dentro del foro para publicar el tema.

Resulta que en mi emocionante viaje como programador novato, me aventuré en el vasto mundo de Pascal. Mi tarea actual: levantar un proyecto existente el cual cuenta con formularios (entre muchos otros componentes) en Pascal utilizando Delphi 7, junto con una intrigante serie de componentes. Pero aquí está el desafío: ¡una base de datos en Firebird 2.0! Mis primeros pasos fueron como los de un explorador en tierras desconocidas. Con cada problema que surgía al intentar levantar el proyecto, surgían preguntas. Sin embargo, con la magia de Internet y la ayuda de foros devotos, he superado obstáculos. Ahora, me encuentro en un nuevo dilema, uno que me tiene perplejo: ¿cómo identificar la conexión de Pascal con Firebird? ¿Cómo cambio esas enigmáticas cadenas de conexión? Me encuentro en la encrucijada de mi viaje y apelo a la comunidad. ¿Alguna alma amable puede señalarme hacia una URL / Manual que ilumine mi camino y me guíe en la identificación de componentes de conexión a bases de datos?

¡Vuestra ayuda será mi faro en esta travesía!

Hola,
Puedes conectar tu aplicación desarrollada en Delphi 7 a una base de datos Firebird 2.0. Para lograrlo, necesitarás un componente de conexión compatible con Firebird en tu entorno de desarrollo (IDE). En Delphi, el componente adecuado para trabajar con bases de datos Firebird se llama "IBDatabase" y pertenece a la biblioteca "InterBase Express" (IBX).

Aquí te muestro cómo puedes utilizar el componente IBDatabase para conectarte a tu base de datos Firebird 2.0 desde Delphi 7:

1. Asegúrate de tener instalado el paquete IBX en tu IDE Delphi 7. Puedes encontrar el archivo de instalación en el sitio web oficial de Embarcadero o en otros repositorios de software.
http://cc.embarcadero.com/Item/20227

2. En tu formulario de Delphi, coloca un componente IBDatabase desde la paleta de componentes. Busca el componente dentro de la categoría "InterBase" o "Firebird".

3. Configura las propiedades del componente IBDatabase para establecer la ruta de acceso a tu base de datos Firebird, el nombre de usuario y la contraseña para acceder a la base de datos. Algunas propiedades importantes pueden ser: DatabaseName, UserName y Password.

4. Puedes conectar el componente IBDatabase en el evento OnCreate del formulario o en cualquier otro lugar adecuado según tus necesidades.

5. Utiliza otros componentes de la biblioteca IBX, como IBQuery o IBDataset, para ejecutar consultas SQL en tu base de datos y manipular los datos.

Aquí tienes un ejemplo de código para conectarte a la base de datos Firebird utilizando el componente IBDatabase:



Código:

uses
  IBDatabase;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IBDatabase1.DatabaseName := 'ruta_a_tu_base_de_datos.fdb';
  IBDatabase1.UserName := 'tu_usuario';
  IBDatabase1.Password := 'tu_contraseña';
 
  try
    IBDatabase1.Connected := True;
    ShowMessage('Conexión exitosa con Firebird');
  except
    on E: Exception do
      ShowMessage('Error al conectar con Firebird: ' + E.Message);
  end;
end;

Suerte.

delphi001 11-01-2024 08:04:47

Gracias Casimiro Notevi!
Gracias Neftali [Germán.Estévez]!
Gracias Delphi01!


¡Saludos!

No estoy seguro de como púedo saber que tipo de tecnología(s) se encuentran aplicadas para la conexión con Firebird, pero he encontrado estos componentes en el código base:
TIBQuery (Tengo entendido se trata de IBX)
TDataSource (Tengo entendido se trata de VCL)
IB_Connection (Tengo entendido se trata de Interbase)
TIBOQuery (Tengo entendido se trata de Interbase)
DatabaseName = '192.168.1.2:Mi-BD' (La BD utilizada)


En cuanto al código base, dejo un par de fragmentos que me indican que se usa una serie de parámetros especificados en alguna parte que aun no logro comprender. Archivo: proyecto.dpr

Código:

frmSplash:=TfrmSplash.Create(Application);
  frmSplash.Caption:=sNomSystem;
  PreparaSplash(True, 1, 1, 1); // Mostrar, nMin, nMax, posIni
  ActSplash('Conectando con el Servidor...',' ',0);
  ActSplash('','Revisar que tenga todos los parámetros',1);
    If ParamCount<2 then
      begin
        myMessageDlg('Faltan Parámetros: '+_Enter+sNomSystem, mtError ,'',0);       
      end;

  ActSplash('','...',1);
    //PRIMER parámetro: Indica se esta ejecutando desde RunSystem
    Try
      sTmp:=myUpperCase(ParamStr(1));     
    Except
      Raise Exception.Create(Incorrecto);
    end;
    //SEGUNDO parámetro: Path de la base de datos
    Case myStrIndex(sTmp,[_NomExeRun,'PALABRA']) Of
    0:begin       
        Try
          getDBPath:=ParamStr(2);         
          DatosIni:=TStringlist.Create;
          k:=Pos(':',getDBPath);
          If k=0 then
            begin
              DatosIni.Add('');
              DatosIni.Add(getDBPath);
            end
          else
            begin
              DatosIni.Add(Copy(getDBPath,1,k-1));
              DatosIni.Add(Copy(getDBPath,k+1,100));
            end;
        Except
          Raise Exception.Create(Incorrecto);
        end;
      end;

         

 begin
            DatosIni:=TStringlist.Create;
            DatosIni.LoadFromFile(_NomIniSystemMiFile);
            //GET Path BD de las DOS PRIMERAS LINEAS del file _NomIniSystemMiFile
            getDBPath:=DatosIni[0]+':'+DatosIni[1];

Desafíos que enfrento:

- Aparentemente se guarda en un archivo .ini pero no localizo un .ini que contenga 192.168.1.2:Mi-BD
- Intenté reemplazando todas las coincidencias de 192.168.1.2:Mi-BD en archivos *.dfm por mi BD TEST en 192.168.1.1:DB-Test (No funcionó ya que se sigue conectando a la base 192.168.1.2:Mi-BD)
- Mi BD Test ya me aseguré tenga su alias, puerto y bien configurada para ser accedida desde local y desde la red lan (probe accediendo con clientes como flamerobin y IBExpert y funciona bien en ambos casos).

Nota: El proyecto se conecta unicamente a una BD en Firebird.

Tu experiencia y orientación serán invaluables para avanzar en este tema. ¿Puedes proporcionar más información o consejos para abordar estos desafíos? ¡Aprecio mucho tu colaboración!

Neftali [Germán.Estévez] 11-01-2024 09:17:18

Cita:

Empezado por delphi001 (Mensaje 553951)
No estoy seguro de como púedo saber que tipo de tecnología(s) se encuentran aplicadas para la conexión con Firebird, pero he encontrado estos componentes en el código base:
TIBQuery (Tengo entendido se trata de IBX)
TDataSource (Tengo entendido se trata de VCL)
IB_Connection (Tengo entendido se trata de Interbase)
TIBOQuery (Tengo entendido se trata de Interbase)
DatabaseName = '192.168.1.2:Mi-BD' (La BD utilizada)

Digamos que la estructura en que se usan los componentes siempre es la misma independientemente de la tecnología.
Algo así:




1) Los 2 primeros se encargan de la conexión (y en el caso de IB/FB también de la transacción)
2) Luego tenemos el TIBTable o TIBQuery que representan TABLAS o SQLs y que se conectan a la conexión
(varios TIBTable, TIBQuery, TIBOQuery,... se pueden conectar a la misma conexión)
3) Finalmente el TDatasource que se encarga de conectar un componente visual (por ejemplo un DBGrid) con una fuente de datos (un TIBTable, TIBQuery,...)

Normalmente casi todos los componentes que se usan para Interbase (en versiones como la tuya Delphi 7) se usan también y son compatibles para conectarse a Firebird.
En cuanto al código, parece que no está completo, pero hay una parte que muestra que la llamada se puede hacer con parámetros, y el segundo parece ser la Base de Datos.

Código Delphi [-]
    //SEGUNDO parámetro: Path de la base de datos
    Case myStrIndex(sTmp,[_NomExeRun,'PALABRA']) Of
    0:begin        
        Try
          getDBPath:=ParamStr(2);          
          DatosIni:=TStringlist.Create;
          k:=Pos(':',getDBPath);
          If k=0 then
            begin
              DatosIni.Add('');
              DatosIni.Add(getDBPath);
            end
          else
            begin
              DatosIni.Add(Copy(getDBPath,1,k-1));
              DatosIni.Add(Copy(getDBPath,k+1,100));
            end;
        Except
          Raise Exception.Create(Incorrecto);
        end;
      end;


ParamStr(2) hace referencia al segunda parámetro de la llamada a tu aplicación.

Casimiro Notevi 11-01-2024 10:41:44

Parece que tienes definido algún alias de la BD, puedes editarla o quitarla, si quieres.
Mira esto:
https://www.firebirdsql.org/rlsnotes...-db-alias.html

delphi001 12-01-2024 03:51:53

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553952)
Normalmente casi todos los componentes que se usan para Interbase (en versiones como la tuya Delphi 7) se usan también y son compatibles para conectarse a Firebird.
En cuanto al código, parece que no está completo, pero hay una parte que muestra que la llamada se puede hacer con parámetros, y el segundo parece ser la Base de Datos.

Gracias.

Luego cómo encuentro información que me de luz para interpretar y configurar parámetros? Entiendo que es una práctica comun usar parámetros pero no encuentro información en internet para leer al respecto.

¿Alguna información que ilumine mi andar en este grandioso recorrido?

delphi001 12-01-2024 03:56:44

Cita:

Empezado por Casimiro Notevi (Mensaje 553953)
Parece que tienes definido algún alias de la BD, puedes editarla o quitarla, si quieres.
Mira esto:

Gracias.

Ahora, cómo logro cambiar la configuración de conexión para conectarme a otra BD?

Actualmente se conecta a 192.168.1.2:Mi-BD
Ahora busco la forma de cambiar la configuración para conectarme a 192.168.1.1:DB-Test

Salud OS

Casimiro Notevi 12-01-2024 10:23:55

Cita:

Empezado por delphi001 (Mensaje 553966)
Gracias.
Ahora, cómo logro cambiar la configuración de conexión para conectarme a otra BD?
Actualmente se conecta a 192.168.1.2:Mi-BD
Ahora busco la forma de cambiar la configuración para conectarme a 192.168.1.1:DB-Test
Salud OS

Para eso te he puesto el enlace ;)

delphi001 12-01-2024 14:34:53

Cita:

Empezado por Casimiro Notevi (Mensaje 553971)
Para eso te he puesto el enlace ;)


Creo que no me explique bien...
En el enlace compartido se habla de cómo aplicar el aliasing (Database File Aliasing)... tema que ya tengo dominado. Así es como ya tengo mi 192.168.1.1:DB-Test listo y funcionando (comprobado).

Mi proyecto pascal en delphi7 actualmente se conecta a 192.168.1.2:Mi-BD

Ahora busco la forma de cambiar en el proyecto de Pascal la configuración para así lograr conectarme a 192.168.1.1:DB-Test (Pero, cuales archivos debería de buscar *.pas o *.dfm o *.ini? Ya intenté reemplazando en todos los archivos del proyecto esta cadena 192.168.1.2:Mi-BD por esta otra 192.168.1.1:DB-Test pero lamentablemente me sigue conectando a la 192.168.1.2:Mi-BD. Me da la impresión de que toma la configuración de otro lugar o incluso que el cambiar así desde código la cadena no afecta incluso posiblemente estoy omitiendo algun paso o simplemente no es la forma adecuada.

Ya se hablo arriba sobre parametros de configuración a la BD y componentes IBX, por lo que pido nombres de articulos, terminología o incluso otras urls que me iluminen para de una vez por todas manejar estas configuraciones en mi proyecto y así lograr conectarme a la BD Test.

Casimiro Notevi 12-01-2024 14:50:24

La ruta estará en componente de base de datos TIBDatabase, y en todo caso puede que lo cambien leyendo de algún archivo.ini pero para esto último tendríamos que ver el código del programa para poder saberlo.

EDITO:
En el código que pusiste antes se ve que hace conexión también indicando la ruta como parámetro al ejecutar el programa, y si no trae parámetro entonces lo lee de un ini.

delphi001 14-01-2024 06:50:23

Cita:

Empezado por Casimiro Notevi (Mensaje 553984)
EDITO:
En el código que pusiste antes se ve que hace conexión también indicando la ruta como parámetro al ejecutar el programa, y si no trae parámetro entonces lo lee de un ini.

Gracias.

Existe algo mas de información para acortar la busqueda en todo el codigo fuente? Cómo puedo saber si se pasa como parámetro al ejecutar el programa? Tienes algún ejemplo?

Me desconecté de la red para obtener algun detalle del error cuando no existe acceso a la BD:

Código:

EurekaLog 5.0.1

## Aplicación:

1.1 Fecha de inicio    : Sat, ...
1.2 Nombre/Descripción  : App
1.3 Número de versión  : 10.0.0.0
1.4 Parámetros          : "/RunSystem.exe" "192.168.1.2:Mi-BD"
1.5 Fecha de Compilación: Sat, ...

## Excepción:

2.1 Fecha    : Sat, ...
2.2 Dirección: 00000000
2.3 Module  : App.exe
2.4 Tipo    : EIB_ISCError
2.5 Mensaje  : ISC ERROR CODE:335544721
.
ISC ERROR MESSAGE:
Unable to complete network request to host "192.168.1.2".
Failed to establish a connection.
unknown Win32 error 10060
.

## Controles Activos:

3.1 Form Class  : TfrmSplash
3.2 Form Text    : "APP"
3.3 Control Class: TfrmSplash
3.4 Control Text : "APP"


Este error se muestra cuando intencionalmente me salgo de la red.

Casimiro Notevi 14-01-2024 12:07:14

Creo que no acabo de entender el problema, si la BD está en 192.168.1.1 entonces cambia el 2 por un 1 (192.168.1.2)

delphi001 14-01-2024 16:25:04

Cita:

Empezado por Casimiro Notevi (Mensaje 554003)
Creo que no acabo de entender el problema, si la BD está en 192.168.1.1 entonces cambia el 2 por un 1 (192.168.1.2)

Eres un genio Casimiro Notevi :cool:

Gracias totales!

Casimiro Notevi 14-01-2024 17:56:37

Cita:

Empezado por delphi001 (Mensaje 554007)
Eres un genio Casimiro Notevi :cool:

Eso decía mi madre :D

¿Entonces ese era el problema?


La franja horaria es GMT +2. Ahora son las 05:04:16.

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