La Web del Programador: Comunidad de Programadores
 
    Pregunta:  23272 - CAMBIOS DE DSN
Autor:  Raul Mendoza
Hola:
Tengo una aplicacion cliente-servidor, que se comunica via ODBC a una base de datos INFORMIX que reside en el servidor.
En el servidor hay dos instancias de la base de datos, necesito saber como puedo cambiar los valores de DSN para que utilizando el mismo DSN se pueda cambiar, sin tener que utilizar ODBC para cambiar estos valores.
Si tienen un ejemplo se los agradeceré.

Gracias

  Respuesta:  Luis Heredia
Desde tu aplicación puedes modificar la base de datos a que apunta el DSN que tienes en ODBC. La función que te mando de ejemplo, cambia la Base de Datos Access a que apunta el DSN.

bool __fastcall CambiarBDAccess (AnsiString FuenteDatos, AnsiString BaseDatos)
{
TRegistry* Registro = new TRegistry;
bool Exito = true;

try
{
Registro->LazyWrite = false;
Registro->OpenKey ( "Software\\ODBC\\ODBC.INI\\"+FuenteDatos, false);
AnsiString Directorio = Registro->ReadString("DBQ");
Directorio = ExtractFileDir(Directorio);
Registro->WriteString ( "DBQ",Directorio+"\\"+BaseDatos+".mdb");
Registro->CloseKey();
}
catch (...)
{
Exito = false;
}

delete Registro;
return (Exito);
}