Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   delphi no compila la base de datos (https://www.clubdelphi.com/foros/showthread.php?t=43393)

ernestogiss 10-05-2007 06:05:07

delphi no compila la base de datos
 
Hola a todos. Recién me he iniciado en la programación y tengo algunos manuales de delphi que he tratado de seguir. Sin embargo, para iniciar en el uso de base de datos he creado una pequeña base de datos paradox en delphi llamada "alumnos". En la aplicación he colocado un componente Table (DBTables), un componente DataSorce (DB) y un componente DBGRID. Bueno, el caso es que he modificado las propiedades de cada uno de ellos y la aplicación corre perfectamente, pues puedo acceder a la base de datos, e insertar nuevos datos de alumnos. El problema ocurre cuando compilo la aplicación en un ejecutable, pues al llevarla a otra computadora me marca un error diciendo que la base de datos no existe (y me marca el directorio en donde debería de estar) La solución que he encontrado es crear ese directorio y vaciar ahí la base de datos. Y entonces corre sin problema. Existe alguna forma de que delphi compile la base de datos desde un principio? Cualquier orientación me ayudará a conservar la poca cordura que aún me queda, pues esto de la programacíon es un verdadero rollo. GRACIAS

marcoszorrilla 10-05-2007 08:01:26

El problema es que tienes que instalar el BDE y si utilizas Alias para acceder a la base de datos crearlo.

Un Saludo.

roman 10-05-2007 09:46:13

Por la descripción del problema, parece que sí está instalado el BDE en la otra PC, pero el hecho de que te marque el directorio donde debería estar la base, me hace pensar que has codificado la ruta del directorio directamente en el ejecutable, en lugarde utilizar un alias.

Tal como menciona Marcos, lo más adecuado es que establezcas un alias, lo cual puedes hacer con el bdeadmin que estará en el panel de control en caso de haber instalado correctamente el BDE. En caso de que no lo sepas, un alias es algo así como un acceso directo que apunta al directorio real. Tu aplicación usa el alias en lugar del destino, lo que permite que puedas colocar la base en el directorio que más convenga en cada pc, sin depender de uno en específico.

// Saludos

Casimiro Notevi 10-05-2007 10:26:29

Cita:

Empezado por ernestogiss
... esto de la programacíon es un verdadero rollo. GRACIAS

:eek::confused: yo opino que es algo fascinante :);)

ernestogiss 11-05-2007 04:31:31

Gracias a Marcos y Román por su ayuda. Ya di de alta el alias y efectivamente parece que ahora si todo funciona a la perfección.
A Casimiro lo unico que le puedo decir es QUE TIENES TODA LA RAZON, Pero a veces suelo desesperarme por que las cosas no funcionan como uno espera, Pero tengo un maestro que dice QUE ENTRE MAS PROBLEMAS TENGAS CON UN PROGRAMA, MAS APRENDES DE EL.

casacham 12-05-2007 00:08:36

Una opcion ANTI Alias
 
Hola, si no quieres utilizar un Alias, y como veras mas adelante cuando quieras distribuir tu aplicacion con InstallShield, veras que el directorio para instalar los archivos que conforman tu base de datos suele estar dentro del que instalas tu aplicacion sugerido por el mismo InstallShield. El punto es que si no quieres utilizar un alias, lo que te propongo es lo siguiente:
1) Crea un directorio dentro del cual estas desarrollando tu aplicacion y copi alli las tablas de tu base de datos si es que usas pradox o el archivo de Acces para ADO.
2) En el objeto TDataBase hace doble click en el evento BeforeConect y alli escribi para los parametros de coneccion una linea que indique la ruta de esta manera

ExtractDirectory(Application.Name)+'\BaseDato';

donde BaseDato es el directorio que creaste para alojar los archivos de tus base de datos. Bueno, espero que me hayas entendido.
Adios

marcoszorrilla 12-05-2007 00:38:25

El inconveniente de esta última propuesta es que si se trabaja en red se obtendrán no pocas corrupciones de índices ya que se aconseja separar el ejecutable de los datos por ejemplo.

C:\Alfa
C:\Alfa\Progs {Aquí estaría el/los ejecutables}
C:\Alfa\Datos{Aquí las tablas}
C:\Alfa\Net{Aquí PdoxUsrs.Net}
C:\Alfa\Temp


Por otra parte se puede incluir en el ejecutable una función que se encargue de crear el alias sino existiera:
Código Delphi [-]
Function Crear_Alias(NombreAlias:String;Nombredir:String):Boolean;
begin
If not session.IsAlias(NombreAlias) Then
   Begin
   Try
      Session.AddStandardAlias(NombreAlias,Nombredir,'PARADOX');
      Session.SaveConfigFile;
      Result:=True;
   except
      Application.MessageBox('Error Creando el alias','Atención',MB_OK);
      Exit;
      Result:=False
      End;
   end
   else
   begin
   Application.MessageBox('El alias ya existe.','Atención',MB_OK);
   Result:=False;
   end;
end;
Un Saludo.

ernestogiss 12-05-2007 20:06:52

installshield
 
Si es cierto, el installShield me da par default (INSTALLDIR) para colocar las bases de datos. Pero yo elegí : (CommonFiles)\Borland Shared\Data. Que es la ruta original donde estan las bases de datos. De ese modo cuando se hace la instalación en otra maquina las bases de datos quedan en su lugar. ¿Estuve bien? Les recuerdo que recien inicio en este campo de la programación.
Gracias por sus respuestas y su interes, voy a intentar las dos propuestas que ma dan.
Un saludo


La franja horaria es GMT +2. Ahora son las 14:12:30.

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