Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
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 17-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Para mi el asunto esta en el adoconnetion.
Creo que deberias o poner la BD en la misma carpeta del exe o usar un archivo ini para que la busque.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 17-10-2010
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Para mi el asunto esta en el adoconnetion.
Creo que deberias o poner la BD en la misma carpeta del exe o usar un archivo ini para que la busque.
Saludos
Hola como andás?
Mirá, la BD ya está en la misma carpeta que el ejecutable. Te molesto mucho si te pido que me expliques lo del archivo ini para que la busque?
Gracias igualmente.
Saludos!
Pancho.-
Responder Con Cita
  #3  
Antiguo 17-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Paso a paso:
Primero que nada coloco un archivo como muestra, decargalo y lo abres con dobleclick.
Vas a ver dentro esto:
Cita:
[BD]
Path="C:\MiBD\Database.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
Como puedes ver el path va a ser la direccion donde colocaras la base de datos, en este caso estaria en C y en la carpeta mibd.
Para cambiarla simplemente colocas la nueva direccion y guardas el archivo.
Ahora vamos a leer el archivo desde delphi:
Dale doble click al ADOConnetion.
Esto te creara el evento OnCreate, coloca esto ahi:
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DatosBD.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB: Database Password=admin';
   ADOConnection1.ConnectionString := ConStr;
   ADOConnection1.Open;
end;
Para que funcione el archivo ini coloca en el uses del datamodule estos:
Código Delphi [-]
uses
  SysUtils, Classes, DB, ADODB, IniFiles, Forms, Dialogs;
Como veras al iniciar el programa cuando se inicia el adoconnection busca el archivo ini que se llama datosbd, ahi busca los datos que estan incluidos en el path y completa la ruta de la bd.
Si cambias la bd a donde sea, con solo cambiar la ruta del path en el ini buscara la bd ahi.
El archivo ini TIENE que estar en la misma carpeta del exe del programa, la base de datos puede estar donde quieras.
Listo, sencillo y facil.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 22-10-2010 a las 22:46:03.
Responder Con Cita
  #4  
Antiguo 18-10-2010
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Paso a paso:
Primero que nada coloco un archivo como muestra, decargalo y lo abres con dobleclick.
Vas a ver dentro esto:

Como puedes ver el path va a ser la direccion donde colocaras la base de datos, en este caso estaria en C y en la carpeta mibd.
Para cambiarla simplemente colocas la nueva direccion y guardas el archivo.
Ahora vamos a leer el archivo desde delphi:
Dale doble click al ADOConnetion.
Esto te creara el evento OnCreate, coloca esto ahi:

Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
IniFile: TIniFile;
begin
// Obtiene la ruta y el nombre de la base de datos
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DatosBD.ini');
BasedeDatos := IniFile.ReadString('BD','Path','');
If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+BaseDeDatos+';'+
'Persist Security Info=False;'+
'Jet OLEDB: Database Password=admin';
ADOConnection1.ConnectionString := ConStr;
ADOConnection1.Open;
end;




Para que funcione el archivo ini coloca en el uses del datamodule estos:

Código Delphi [-]
uses
SysUtils, Classes, DB, ADODB, IniFiles, Forms, Dialogs;



Como veras al iniciar el programa cuando se inicia el adoconnection busca el archivo ini que se llama datosbd, ahi busca los datos que estan incluidos en el path y completa la ruta de la bd.
Si cambias la bd a donde sea, con solo cambiar la ruta del path en el ini buscara la bd ahi.
El archivo ini TIENE que estar en la misma carpeta del exe del programa, la base de datos puede estar donde quieras.
Listo, sencillo y facil.
Saludos
Buenas,
Lo voy a probar en éstas horas y te aviso como me fué. Gracias de antemano.
Saludos!
Pancho.-
Responder Con Cita
  #5  
Antiguo 18-10-2010
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Buenas ....
Mirá estube chusmeando bien la idea que me tirastes con el archivo.ini
Por lo que entiendí, es un archivo que en el momento de crearse el modulo de datos de la aplicación, me conecta el ADOConection a la BD ...
Pero el problema que tengo yo no es la conección. Bueno si es la conección, pero no desde Delphi a Access. O sea, lo que me está generando un problema es que cuando yo le creo un instalador al programa, pierdo la ruta ... o sea que me tira el error ( onda un mtError ) diciendome que no pudo conectar la base y me tira una ruta ( C:\ Documents ...\ Administrador ) cualquiera donde NO esta la base y nunca le dije que estaba ahí. Ahora una pregunta, cuando vos me decís que en el archivo.ini le cargue la ruta de mi BD, si yo en ves de ponerle la ruta específica donde se encuentra la base le pongo ".\Database.mdb", funciona igual ??. Te pregunto por que lo voy a tener que meter en otra compu el programa.
No se si me explico bien, pero el problema que tengo yo es que cuando creo el Instalador pierdo la ruta, o mejor dicho, me busca la BD en una ruta cualquierra y bueno, obviamente no la encuentra. Igualmente voy a probar haciendolo como me decís vos con el archivo.ini para ver que onda.

Saludos!
Pancho.-

PD: No puedo abrir el archivo que me adjuntastes desde un editor ...
Responder Con Cita
  #6  
Antiguo 18-10-2010
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Buenas nuevamente, ya descubrí el problema pero no se como solucionarlo jeje. El tema es así, el instalador de la aplicación anda bárbaro, siempre y cuando la ruta desde el ADOConnection a la BD en Access sea mmm fija digamos ( osea si en el Source le mando D:\Pancho\Sistemas\ "lalala"\Database.mdb ). Ahora, cuando en el Source del ADOConnection le mando: .\Database.mbd ( para hacerlo genérico ), instálo la aplicación correctamente pero cuando la ejecuto no me encuentra la BD, lo raro es que me la busca en una ruta que nunca le especifiqué para nada ¿? ....
Saludos!
Pancho.-

PD: Aclaración, cuando le mando la ruta genérica y ejecuto el programa desde Delphi anda bien. Cuando le genero el instalador anda mal. Perdón si soy muy repetitivo, lo que busco es ser claro jeje.
Responder Con Cita
  #7  
Antiguo 18-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal vez deberías construir esa ruta de forma dinámica.
Es decir, la primera vez que arrancas, buscas el path de tu aplicación, le concatenas el nombre de la base de datos y lo almacenas (NOTA1) para las siguientes ejecuciones.

(NOTA1): Lo normal es usar un archivo de texto (INI por ejemplo) o el registro.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Problema con Access y Delphi 2 Besto Conexión con bases de datos 3 17-04-2008 15:32:46
Problema de Access Violation en Delphi 7 nlsgarcia API de Windows 5 20-02-2007 02:58:07
Problema con transacciones en Access y Delphi Capi666 SQL 1 11-01-2007 21:49:14
Problema con instalador (en InnoSetup) Laurana C++ Builder 2 30-11-2006 13:44:33
Delphi->Access (Problema con Usuarios de Windows) Gelmin Conexión con bases de datos 2 10-06-2005 19:54:11


La franja horaria es GMT +2. Ahora son las 07:29:16.


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