FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Conexion a base de datos
Buenas tardes, he terminado una aplicación en Delphi, y por otra parte estoy creando un proyecto de instalación. Ambos proyectos son independientes. Mi problema viene porque al ejecutar el instalador, yo elijo la ruta(directorio) de instalación del proyecto principal, hasta ahi, todo bien, me copia el proyecto en el directorio que yo elijo, pero lo que necesito es pasarle el valor de ese directorio(ruta), al adoConnection.ConecctionString del proyecto principal.
Esto es lo que tengo en el oncreate del proyecto principal: procedure TfmProyecto.FormCreate(Sender: TObject); begin dmModuloDatos.ADOConnection2.Connected:=false; dmModuloDatos.ADOConnection2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Eduardo\Prueba\Datos\Database Proyecto.mdb;Persist Security Info=False'; dmModuloDatos.ADOConnection2.Connected:=true; end; Lo que aparece señalado en rojo es la ruta donde debería estar la base de datos, pero si cambio el directorio de instalación, no se como puedo recoger el valor de la ruta del otro formulario para pasarselo a este. Espero haber sido lo más claro posible, un saludo y gracias de antemano |
#2
|
||||
|
||||
Hola
Para esto es mejor usar un archivo INI. Con el se instala donde sea y solo se modifica el archivo. El programa buscara la direccion de la BD en ese archivo, es muy sencillo. Saludos
__________________
Siempre Novato |
#3
|
|||
|
|||
Pues la verdad es que no me lo había ni planteado, pero ahora el problema es que no he creado nunca ningun archivo INI, me podrías mandar a algún hilo sobre esto, o explicarme un poco..gracias de nuevo
|
#4
|
||||
|
||||
Hola
Es muy sencillo, te lo explico paso a paso: Veo que tienes el AdoConnection en un Datamodule, en tu caso: dmModuloDatos 1- Datamodule: (dmModuloDatos) Vamos a colocar en el USES del Datamodule IniFiles asi: Posicionate en la parte BLANCA del dataModule y dale doble Click, eso te genera el evento OnCreate del datamodule. Coloca esto: Listo, asi de simple, el programa arranca, revisa el datamodule, busca el archivo ini, recoge la informacion y ya. El archivo ini tiene que estar en la misma carpeta que el EXE del programa para que lo encuentre, la DB puede estar donde sea, la direccion se la dara el ini. Pongo aqui uno hecho para que simplemente le cambies la direccion (path) a la que necesites (actualmente tiene la misma direccion que pusiste tu). Saludos PD: Si se me olvida algo grita......
__________________
Siempre Novato Última edición por Caral fecha: 17-07-2010 a las 19:54:11. |
#5
|
|||
|
|||
Muchas gracias por tu ayuda, sólo detecto un pequeño problema, bueno en realidad es un gran problema, al instalar los archivos en cualquier carpeta del disco duro, cuando realizo algún cambi0 en la base de datos, ejemplo insertar algún registro, dar de baja algun registro, no lo hace en la base de datos que hemos copiado, sino en la original, te explico mejor: Con esta sentencia elijo donde instalar el programa.
If not DirectoryExists(c:\Archivos de programa\Eduardo\Prueba') then CreateDir('c:\Archivos de programa\Eduardo\Prueba') ; CopiaTodo('c:\Archivos de Programa\Eduardo\proyecto nuevo\*.*', 'c:\Archivos de programa\Eduardo\Prueba'); showmessage('Todos los archivos se han copiado con éxito'); Funciona bien y dentro del directorio prueba se guarda todo.El problema es que dentro del directorio original "c:\Archivos de Programa\Eduardo\proyecto nuevo" , hay dos carpetas "datos" y "programa", la carpeta datos aloja la base de datos y en la carpeta programa se encuentra el ejecutable y el archivo INI, las copia las dos a la carpeta destino "c:\Archivos de programa\Eduardo\Prueba", lo malo es que cuando ejecuto el programa desde la carpeta de destino, los cambios en la base de datos los guarda en la carpeta de origen. El archivo INI lo he dejado asi: [BD] Path="..\Datos\Database Proyecto.mdb" [Logon] Auto="No" Login="" Pass="" Siento estar dando tanto follón, pero cuando uno se ciega con algo....pufff. |
#6
|
||||
|
||||
Hola
No entiendo el problema. El archivo INI lo que hace es la conexion con la BD, independientemente de donde la tengas instalada. Si cambias la direccion en el INI buscara ahi la BD, siempre y cuando arranque en tu programa el datamodule primero que el form principal. Saludos
__________________
Siempre Novato |
#7
|
|||
|
|||
Estoy buscando el problema a ver donde está, de todas maneras muchas gracias por tu ayuda, me ha sido muy útil, voy a ver si descanso un rato y seguro k luego el fallo aparece enseguida.
Gracias de nuevo |
#8
|
||||
|
||||
Tan sólo añadir al código de Caral que ha olvidado liberar la memoria del ini.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Hola
jejeje, otra cosa mas que se aprende. Gracias amigo. Saludos
__________________
Siempre Novato |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
conexion de una base de datos | airam | Conexión con bases de datos | 0 | 29-05-2008 23:56:59 |
Conexion a mas de una base de datos | rruffino | Conexión con bases de datos | 3 | 27-02-2008 22:27:08 |
conexion a base de datos | weke | Conexión con bases de datos | 7 | 22-08-2007 02:46:43 |
Conexion con base de datos | mjjj | Conexión con bases de datos | 3 | 10-05-2007 22:51:01 |
Conexion con Base de Datos | trex2000 | Conexión con bases de datos | 0 | 20-04-2004 00:59:54 |
|