Ver Mensaje Individual
  #4  
Antiguo 31-05-2006
Avatar de Arturo Cabrera
Arturo Cabrera Arturo Cabrera is offline
Registrado
 
Registrado: abr 2006
Posts: 8
Reputación: 0
Arturo Cabrera Va por buen camino
Talking La solución que encontre

he luis muy buena la idea de trabajar con los dsn. mira dando vuelta por internet encontre este codigo que te genera el dsn de usuario:



Código:
bool TForm1::CreateODBCAlias(String sAlias, String sDB, String sDir, String sDescription,String sUsuario,String sPWD)

{
//bool ret;

//ret = CreateODBCAlias("MiAlias",

//"base de datos en mysql",
//"C:\directorio\datos\",
//"Esto es una prueba";
// Devuelve true si se crea correctamente
//ShowMessage(ret ? "Creado" : "Error"
 typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
 pSQLConfigDataSource SQLConfigDataSource;
 HINSTANCE hLib;
 bool bRet = false;
 hLib = LoadLibrary("odbccp32.dll");
  if (hLib)
    {
      SQLConfigDataSource =  (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
      if (SQLConfigDataSource)
        {
            char Param[1024];
            sprintf(Param, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s; UID=%s; PWD=%s\0",sAlias.c_str(),sDB.c_str(),sDescription.c_str(),sDir.c_str(),sUsuario.c_str(),sPWD.c_str());
            bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,"MySQL ODBC 3.51 Driver",Param);
            //el 1 significa un dsn por usuario.
        }
      FreeLibrary(hLib);
  }
 // Devuelve true si se crea o false en caso contrario
 return bRet;
}
era para microsoft acces y lo estoy modificando para que me genere un dsn para mysql. ya me lo genera pero ahora tengo una duda que no puedo solucionar que capaz que me puedan ayudar.
me toma bien el nombre del alias. la descripcion. la direccion de la base de datos. PERO no me toma el nombre de la base de datos ni los datos del usuario y su pass. me imagino que es porque los atributos que le mando estan mal. es decir en ves de DBQ debe ir una cosa algo asi como DataBase para que lo tome.
si alguien sabe desde ya muchas gracias.
Responder Con Cita