Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Rute de la base de datos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Rute de la base de datos Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

muchas gracias por las respuestas, funciona perfecto.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.