| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Larrosa Cdt

Registrado: 23 Sep 2004Mensajes: 15
|
Publicado: Mar 15 Sep, 2009 6:38 pm Asunto: Rute de la base de datos |
|
|
Hola,
tengo un programa que se conecta a una base de datos de access, en el connectionstring del ADOTable1 tengo la ruta del .mdb dentro de una carpeta donde esta el ejecutable y el programa funciona bien, pero si ejecuto el programa por ejemplo en otra unidad ya no funciona y dice que no encuentra la mdb.
Alguna solucion?
Gracias. |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Mar 15 Sep, 2009 8:14 pm Asunto: |
|
|
La manera como yo lo he solucionado es guardando, por ejemplo en un fichero INI, los parametros de conexion (En el caso de access sería la ruta donde esta el fichero MDB). Entonces modificando ese fichero INI, no tienes que andar tocando el ejecutable.
Espero haberte ayudado. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 16 Sep, 2009 12:43 am Asunto: |
|
|
Puedes usar el evento "OnBeforeOpen" del "TADOTable" y modificar la cadena de conexión como sea necesario antes de que se abra la base de datos.
Por ejemplo, poniendo el siguiente código en el "OnBeforeOpen" lo que hace es cambiar la ruta de la base de datos para que busque siempre en el mismo directorio donde está el ejecutable:
| Código: | // Añadir: #include<memory>
std::auto_ptr<TStringList> sl(new TStringList);
String conn = static_cast<TADOTable*>(DataSet)->ConnectionString;
char* p = strtok(conn.c_str(), ";");
while (p) { sl->Add(p); p = strtok(0, ";"); }
String mdb = ExtractFileName(sl->Values["Data Source"]);
sl->Values["Data Source"] = ExtractFilePath(Application->ExeName) + mdb;
conn=""; for (int i = 0; i < sl->Count; i++) conn += ";" + sl->Strings[i];
static_cast<TADOTable*>(DataSet)->ConnectionString = conn; |
|
|
| Volver arriba |
|
 |
Larrosa Cdt

Registrado: 23 Sep 2004Mensajes: 15
|
Publicado: Mie 16 Sep, 2009 8:51 am Asunto: |
|
|
| muchas gracias por las respuestas, funciona perfecto. |
|
| Volver arriba |
|
 |
|