 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Raúl128 Invitado
|
Publicado: Dom 02 Mar, 2003 9:47 pm Asunto: Configurar ODBC |
|
|
Hola Amigos,
Tengo una duda y espero que algien pueda ayudarme...
¿Puedo crear un Origen de datos (DSN de Sistema) a través de código?
Lo que pasa es que tengo lista mi aplicacón y tengo configurado mi DSN con el driver de Access. Ahora bien cuando instalo mi aplicación en otro ordenador tengo que configurar manualmente a través del ODBC mi origen de datos.
Entonces lo que necesito y saber si puedo crear mediante código esta configuración. Es algo asi como crear un Alias en el BDE, pero en mis caso sería en el ODBC.
Por su atención. Gracias.
Saludos, Raúl |
|
| Volver arriba |
|
 |
Raul128 Invitado
|
Publicado: Mar 04 Mar, 2003 4:28 am Asunto: |
|
|
Alguna idea o sugerencia...
Gracias. |
|
| Volver arriba |
|
 |
luis Invitado
|
Publicado: Mar 04 Mar, 2003 4:46 pm Asunto: |
|
|
Te paso el codigo que crea y el que elimina los odbc, espero te sirvan.
bool TfrmPpal::CreateODBCAlias(String sAlias, String sDB, String sDir, String sDescription)
{
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 szParam[1024];
sprintf(szParam, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s\0", sAlias.c_str(), sDescription.c_str(), sDir.c_str(), sDB.c_str());
bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/, "Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
} // Devuelve true si se crea o false en caso contrario
return bRet;
}
bool TfrmPpal::RemoveODBCAlias(String sAlias)
{
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 szParam[1024];
sprintf(szParam, "DSN=%s;\0", sAlias.c_str());
bRet = SQLConfigDataSource(NULL, 3 /*ODBC_REMOVE_DSN*/, "Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
} // Devuelve true si se borra o false en caso contrario
return bRet;
} |
|
| Volver arriba |
|
 |
Raul128 Invitado
|
Publicado: Mie 05 Mar, 2003 2:19 am Asunto: |
|
|
Gracias luis.
Lo probaré...
Saludos Raúl |
|
| Volver arriba |
|
 |
nacho Invitado
|
Publicado: Jue 06 Mar, 2003 12:15 pm Asunto: Creacion de ODBC |
|
|
Hola Luis:
Me podrías indicar que librerias utilizas (*.h)
Cambiando el driver para SQL Server funcionaría igualmente.
un saludo y gracias de antemano |
|
| Volver arriba |
|
 |
Laura Invitado
|
Publicado: Jue 06 Mar, 2003 5:55 pm Asunto: |
|
|
Hola,
he probado el código para crear el ODBC pero cuando llega a la linea:
bRetorno = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/, "PostgreSQL", szParam);
me sale la pantalla esta de seguimiento de los registros de la CPU o algo así, y realmente no sé qué estoy haciendo mal.
Si alguien sugiere algo,
gracias,
Laura |
|
| Volver arriba |
|
 |
luis Invitado
|
Publicado: Jue 06 Mar, 2003 8:01 pm Asunto: |
|
|
| Nacho, en mi aplicacion no usa ningun .h en particular. Para que funcione para SQL Serverm debes cambiarle la cadena de conexion (szParam) y adecuarla a tu base de datos. |
|
| Volver arriba |
|
 |
luis Invitado
|
Publicado: Jue 06 Mar, 2003 8:06 pm Asunto: |
|
|
Laura, no se a que se deba tu problema, pero sospecho que es porque el el tercer parametro ("PostgreSQL") debe ser un nombre de driver valido, de los que aparecen en la lista cuando creas un ODBC manualmente. Por ejemplo, estas serian unas cadenas validas:
bRetorno = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/, "Microsoft Acces Driver (*.mdb)", szParam);
o
bRetorno = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/, "SQL Server", szParam);
Espero que te funcione. |
|
| Volver arriba |
|
 |
nacho Invitado
|
Publicado: Vie 07 Mar, 2003 9:02 am Asunto: Creacion de ODBC |
|
|
Hola Luis:
Disculpa, pero se me fue un poco el santo al cielo.
El problema que tengo es con la asignación de atributos.
La base de datos, SQL Server, tendría la siguiente ODBC.
Alias: factura1
Descripción: Base de Datos Mensual
SERVER: Aldebaran o 189.245.80.97
user de BD: facturacion
pasw de BD: facturacion
Conexion por TCP y al puerto 1433.
String a1,a2,a3,a4,a5,a6,a7;
a1="factura1";
a2="Base de Datos Mensual";
a3="189.245.80.97";
a4="FACTURACION";
a5="facturacion";
a6="facturacion";
a7="dbmssocn";
sprintf(szParam, "DSN=%s; Server=ALDEBARAN; Description=%s; Address=%s; Database=%s; UID=%s; PWD=%s; Network=%s;",a1.c_str(),a2.c_str(),a3.c_str(),a4.c_str(),a5.c_str(),a6.c_str(),a7.c_str());
bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,
"SQL Server", szParam);
Te agradecería Luis, que me dijeras por que Falla
un saludo |
|
| Volver arriba |
|
 |
Laura Invitado
|
Publicado: Lun 10 Mar, 2003 8:34 am Asunto: |
|
|
Hola,
a ver yo tuve algunos problemillas con esta función, pero he conseguido arreglarlos, paso mi código de función y si alguien quiere algún tipo de explicación que lo diga vale?
bool __fastcall TForm1::CreateODBCAlias(String sAlias, String sDB, String sDir, String sDescription)
{
typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
pSQLConfigDataSource SQLConfigDataSource;
HINSTANCE hLib;
bool bRet;
hLib = LoadLibrary("odbccp32.dll");
if (hLib)
{
SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
if (SQLConfigDataSource)
{
char szParam[1024];
memset(szParam,'\0',sizeof(szParam));
sprintf(szParam, "DSN=%s;Database=%s;Server=% s;Uid=s;DefaultDir=%s", sAlias.c_str(),sDB.c_str(),sDir.c_str(),"calypso");
char *p;
p = szParam;
while (*p) {
if (*p == ';') {
*p = '\0';
++p;
}
++p;
}
bRet = SQLConfigDataSource(NULL, ODBC_ADD_DSN, "PostgreSQL", szParam);
}
FreeLibrary(hLib);
} // Devuelve true si se crea o false en caso contrario
return bRet;
}
Por cierto mi base de datos está con Postgres.
Saludos,
Laura |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|