Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Generar codigo odbc. (https://www.clubdelphi.com/foros/showthread.php?t=32005)

Arturo Cabrera 24-05-2006 02:50:46

Generar codigo odbc.
 
hola. disculpen las molestias. tengo una duda sobre. el codigo que tengo que poner para generar el acceso odbc.
bueno. mi problema es el siguiente:

tengo un programa con una base de datos en mysql. (supongamos que se llama escuela).

bueno voy a panel de control (trabajo sobre windows). voy al administrador de origenes odbc y creo el alias. EL programa anda barbaro.

bueno ahora deseo hacer los instaladores. y estoy trabajando con el install shield. bueno lei por ahi que tengo que agregar un codigo adicional al programa para que cuando ejecute el programa en otra maquina se cree automaticamente el alias. y no se cual es. si alguien entiende mi duda y me puede ayudar. desde ya muchas gracias.

luisgutierrezb 25-05-2006 01:38:02

el archivo dsn, es un vil archivo ini con parametros como el driver y otros, asi que del que creaste puedes verlo y crear un archivo ini para posteriormente guardarlo en la ruta que te marca el registro de windows, la cual es:

HKLM\Software\odbc\odbc.ini\odbc file dsn
DefaultDsnDir

esta es la forma facil, hay un componente llamado "DSN Alias" que sirve para crear alias dsn para archivos de access, no creo que este complicado adaptarlo a mysql sobretodo porque incluye codigo fuente

luisgutierrezb 25-05-2006 01:38:51

por cierto la pagina del componente

Arturo Cabrera 31-05-2006 16:32:49

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.


La franja horaria es GMT +2. Ahora son las 21:20:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi